我在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)
我在QTableWidget列上有一个QCompleter。用户开始编辑后,我希望弹出完成器,而不是等待他们首先输入文本。我将setEditorData函数细分为子类...
显示小部件时必须调用complete()
,为此,您可以使用complete()
方法: