我正在使用QStandardItemModel和QStandardItem。
我不想写自己的模特和任何代表。
我只想在第二栏中找到QComboBox'的复选框树...
m_model->setColumnCount(2);
for (int i = 0; i < sectionCount; i++)
{
QStandardItem * section = new QStandardItem(tr("Section %1").arg(i+1));
section->setCheckable(true);
section->setCheckState(Qt::Checked);
for (int j = 0; j < itemsCount; j++)
{
QStandardItem * item = new QStandardItem(tr("Item %1").arg(j+1));
item->setCheckable(true);
item->setCheckState(Qt::Checked);
QStandardItem * item2 = new QStandardItem("xxx");
section->appendRow(QList<QStandardItem*>() << item << item2);
QComboBox * combo = new QComboBox();
QModelIndex index = m_model->index(j, 1, );
// HERE i have index = {-1;-1}
ui->treeView_options->setIndexWidget(index, combo);
}
m_model->appendRow(section);
}
是否可以这样使用setIndexWidget?
更新
我在第二栏中没有QComboBox ......为什么?
答案 0 :(得分:6)
实际上是可能的。我建议先创建一个包含两列的模型。连续创建项目并将其附加到模型。只有在您添加了包含项目的行后,才能使用您的组合框内容调用view->setIndexWidget()
。它对我有用,而且我有动态内容。 ItemDelegates更复杂,我建议setIndexWidget()
- 为我工作就好了。
答案 1 :(得分:1)
不,不行:
此功能仅用于显示与数据项对应的可见区域内的静态内容。如果要显示自定义动态内容或实现自定义编辑器窗口小部件,请改为继承QItemDelegate。