C++ 自动展开qtreeview中的委托qcombobox
我实现了自己的QTreeModel,在第一列中,我使用的是定制委托,它是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编辑器中自动展开要选择的项目列表?
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());
组合框->显示弹出窗口();
}