如何将ItemDelegate设置为仅应用于QTreeView中的父列

时间:2017-08-03 15:02:22

标签: c++ qt

我将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;
}

1 个答案:

答案 0 :(得分:0)

你应该做的是使用QModelIndex &index参数获取行,然后说出如下内容:

if (!index.parent().isValid()) {
     //draw combobox
}
else {
     //don't draw
}