【发布时间】:2019-10-31 04:56:07
【问题描述】:
我在 QTableWidget 列上有一个 QCompleter。一旦用户开始编辑,我希望完成者弹出,而不是等待他们先输入文本。我将 QStyledItemDelegate 的 setEditorData 函数子类化来执行此操作,这对我来说似乎最有意义,但是当我调用 completer.complete() 时,直到我完成编辑(此时弹出窗口)才会发生任何事情。
这是我的委托代码:
class CompleterItemDelegate(QtGui.QStyledItemDelegate):
def createEditor(self, parent, option, index):
completer = QtGui.QCompleter(['test', 'test2'])
completer.setCompletionMode(completer.UnfilteredPopupCompletion)
edit = QtGui.QLineEdit(parent)
edit.setCompleter(completer)
return edit
def setEditorData(self, editor, index):
completer = editor.completer()
completer.complete() # does not fire until after editing is done
completer.popup().show() # no luck here either
print("setting editor data") # this however does work as expected...
super().setEditorData(editor, index)
【问题讨论】: