Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何使用QStyledItemDelegate仅使视图的一部分可编辑?_Qt_Model View Controller - Fatal编程技术网

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
足够聪明,可以检查一个指针。谢谢