【发布时间】:2014-04-14 10:51:44
【问题描述】:
我的QTableView 和QItemDelegate 课程有问题。对于一列,我的代表创建了一个简单的组合框,一切正常。对于我的第二列,我需要一个在一个小部件中包含两个组合框的小部件。
我在QItemDelegate 中编写了以下代码,为了清楚起见,这仅显示了我的第二列的代码,即不起作用的那一列。另一个简单的组合框没有显示,因为它工作正常:
QWidget *UserDefinedUnitsDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem & option ,const QModelIndex & index ) const
{
//set up a simple widget with a layout
QWidget* pWidget = new QWidget(parent);
QHBoxLayout* hLayout = new QHBoxLayout(pWidget);
pWidget->setLayout(hLayout);
//add two combo boxes to the layout
QComboBox* comboEditor = new QComboBox(pWidget);
QComboBox* comboEditor2 = new QComboBox(pWidget);
//now add both editors to this
hLayout->addWidget(comboEditor);
hLayout->addWidget(comboEditor2);
return pWidget;
}
现在它显示得很好,但是当我编辑它并单击其他地方时,它不会停止编辑。有没有人可以指点一下?
编辑:所以我需要在某个时候调用 CommitData() 和 closeEditor()。谁能提供关于在哪里调用这些的指针?
谢谢。
【问题讨论】:
-
您的问题与
QItemDelegate有什么关系?显示一些代码。 -
已更新以显示此代码在 QItemDelegate::createEditor 方法中。谢谢指出,不是很清楚。
-
你在哪里打电话
QAbstractItemView::closeEditor/commitData? -
我没有设置它,因为当我使用一个简单的 ComboBox 时,它似乎可以自己做。
-
是的。但是您使用的是自定义编辑器。
标签: c++ qt qtableview qitemdelegate