查找并参阅了多位前辈的文章,最后总结如下:
新建C++类继承QItemDelegate,并覆写如下三个函数:
//绘制背景及内容、样式
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
//创建编辑控件
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
//鼠标、键盘事件处理
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index);
1、绘制自增的编号/行号及复选框
void MyAutoIndexColumnDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem myOption = option;
//绘制背景(默认蓝色底),不写这句的话,复选框背景无法显