微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自动展开在 qtreeview 中作为委托的 qcombobox

如何解决自动展开在 qtreeview 中作为委托的 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();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。