python - QTreeView 中的 QCompleter 未完成预期的列
问题描述
我正在通过 QStyledItemDelegate 在 QTreeView 上安装 QCompleter。我的 QStandardItemModel 如下所示:
Item 1
\_ Item A, Item B, Item C
\_ Item D, Item E, Item F
Item 2
\_ Item G, Item H, Item I
在子类委托中,我有以下代码:
def createEditor(self, parent, option, index):
completer = QtGui.QCompleter(index.model(), parent)
completer.setCompletionRole(QtCore.Qt.DisplayRole)
completer.setCompleterColumn(0) # here's where it gets weird
edit = QtGui.QLineEdit(parent)
edit.setCompleter(completer)
return edit
问题是我似乎无法让我的完成者在我的分层树中搜索子项。例如,它只会返回“Item 1, Item 2”而不是“Item A, Item D”。好像我缺少“setParentItem()”函数或其他东西......
这是一些手动执行我想要的“工作”代码,但是我想知道如何直接在模型上执行此操作:
string_list = []
for row in range(index.model().itemFromIndex(index.parent()).rowCount):
string_list.append(index.model().sibling(row, index.column(), index).data(QtCore.Qt.DisplayRole))
completer = QtGui.QCompleter(string_list, parent)
edit = QtGui.QLineEdit(parent)
edit.setCompleter(competer)
解决方案
推荐阅读
- shopify - 在shopify中将所有变体添加到产品类别页面的最聪明方法是什么
- wix - 在选项页面上使用单选按钮刻录引导程序项目
- python - Python scikit 学习决策树
- python - 键入打印“编码正在编码”时,打印语句不起作用
- javascript - 如果它相当大,从另一个组件返回可以吗?
- r - 根据条件将列添加到新的空数据框(使用循环和 IF 语句)
- php - LinuxMint debbie 安装 PHP7.4
- awk - AWK 连接字符串
- wordpress - WooCommerce SKU
- r - 如何在谷歌 colab 中安装 Tsintermittent 包?