我将QComboboxes插入到QTreeView的第一列中,如下所示。
view->setItemDelegateForColumn(0, new ComboBoxDelegate(view));
第0列中的节点有子节点,如果我没有记错,它们也是列“0”的一部分。因此,组合框也出现在那里。如何防止组合框出现在子分支中?
我现在拥有的:
>Combobox1
Combobox2
我希望它看起来如何:(“text”取决于组合框的索引)
>Combobox1
Text
以下是创建组合框的一些功能:
ComboBoxDelegate::ComboBoxDelegate(QObject *parent): QItemDelegate(parent){
}
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const{
QComboBox *editor = new QComboBox(parent);
editor->addItem("Run");
editor->addItem("Run with SM");
editor->addItem("Kinetic Run");
}
return editor;
}
答案 0 :(得分:0)
你应该做的是使用QModelIndex &index
参数获取行,然后说出如下内容:
if (!index.parent().isValid()) {
//draw combobox
}
else {
//don't draw
}