注意:view中这样设置tabelView.setEditTriggers(QAbstractItemView::NoEditTriggers)在界面点击无法显示编辑器,需要和后面一段结合就能达到不能编辑又能显示控件
view->openPersistentEditor(mTtemModel->index(0, 8)); //持久显示控件
//渲染相关的接口
void paint(QPainter *painter,
const QStyleOptionViewItem &option, const QModelIndex &index) const override;
QSize sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
//编辑相关的接口 用于创建编辑器
QWidget *createEditor(QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
//将模型中的数据赋值给编辑器 如果没有把数据设置给编辑器,那么用户在编辑时候,编辑器上不会有默认的数据显示(原始数据显示在原位置 方便更改对比)
void setEditorData(QWidget *editor, const QModelIndex &index) const override;
//将编辑器的值赋值给model 用户在编辑器上更该数据,已更改的数据将显示到view,如果不设置,则无法显示已更改的内容
void setModelData(QWidget *editor,
QAbstractItemModel *model,
const QModelIndex &index) const override;
//更新编辑器的位置大小
void updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index) const override;