QTreeView中的QCompleter未完成预期的列

时间:2018-12-06 18:56:34

标签: python pyqt pyqt4 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

问题是我似乎无法让我的完成者在层次树中搜索子项。例如,它将仅返回“项目1,项目2”,而不返回“项目A,项目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)

0 个答案:

没有答案