C++ 自动展开qtreeview中的委托qcombobox

C++ 自动展开qtreeview中的委托qcombobox,c++,qt,delegates,qtreeview,qcombobox,C++,Qt,Delegates,Qtreeview,Qcombobox,我实现了自己的QTreeModel,在第一列中,我使用的是定制委托,它是QComboBox,自动完成其中的一些字符串。 委托是通过使用创建的 QWidget*createEditor(QWidget*parent,const QStyleOptionViewItem&option,const QModelIndex&index)方法。 此外,仅当向某些树模型项添加新行时,才会创建委托。 我的问题是,在将新项目添加到目录树后,是否以及如何在创建的QComboBox编辑器中自动展开要选择的项目列表?

我实现了自己的QTreeModel,在第一列中,我使用的是定制委托,它是QComboBox,自动完成其中的一些字符串。 委托是通过使用创建的
QWidget*createEditor(QWidget*parent,const QStyleOptionViewItem&option,const QModelIndex&index)方法。
此外,仅当向某些树模型项添加新行时,才会创建委托。

我的问题是,在将新项目添加到目录树后,是否以及如何在创建的QComboBox编辑器中自动展开要选择的项目列表?

要进入编辑模式,可以使用:

void QAbstractItemView::edit(const QModelIndex &index)
将显示组合框,但不会打开。为此,您可以重写
QStyledItemDelegate::setEditorData()
并调用
combobox->showPopup()位于函数末尾

void setEditorData(QWidget *editor, const QModelIndex &index) const
{
    // check correct index for combobox

    QComboBox *combobox = qobject_cast<QComboBox *>(editor);
    combobox->setCurrentText(index.data(Qt::EditRole).toString());
    combobox->showPopup();
}
void setEditorData(QWidget*编辑器,常量QModelIndex&index)常量
{
//检查组合框的正确索引
QComboBox*combobox=qobject\u cast(编辑器);
combobox->setCurrentText(index.data(Qt::EditRole.toString());
组合框->显示弹出窗口();
}