Qt 如何使用QStyledItemDelegate仅使视图的一部分可编辑?
我试图教自己如何正确使用Qt 如何使用QStyledItemDelegate仅使视图的一部分可编辑?,qt,model-view-controller,Qt,Model View Controller,我试图教自己如何正确使用QStyledItemDelegate类。我在这里读到了一个很棒的例子: 但有一个问题我似乎无法回答。让我们看看他们的例子截图。 我如何在他们的示例中编写SpinBoxDelegate,这样我就只能编辑部分数据,比如说,只编辑第2列中的项?我假设您已经在实现QabstratemDelegate::createEditor() 指示表中某个索引不可编辑的最简单方法是从此函数返回NULL,例如: QWidget *QAbstractItemDelegate::createE
QStyledItemDelegate
类。我在这里读到了一个很棒的例子:
但有一个问题我似乎无法回答。让我们看看他们的例子截图。
我如何在他们的示例中编写
SpinBoxDelegate
,这样我就只能编辑部分数据,比如说,只编辑第2列中的项?我假设您已经在实现QabstratemDelegate::createEditor()
指示表中某个索引不可编辑的最简单方法是从此函数返回NULL
,例如:
QWidget *QAbstractItemDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index )
{
if( index.column() == 0 )
return NULL;
return new QSpinBox( parent );
}
您可以通过在模型中填充附加信息并使用实现此目的的
QModelIndex::data()
检索它来获得更丰富的信息。我有点担心返回空指针会使程序崩溃……我没有意识到qabstractemdelegate
足够聪明,可以检查一个指针。谢谢