自动扩展在 qtreeview 中作为委托的 qcombobox
Auto expand qcombobox that is delegate in qtreeview
我实现了自己的 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();
}
我实现了自己的 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();
}