我有一个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)
当小部件显示时,必须调用^{} ,为此可以使用^{} 方法:
相关问题 更多 >
编程相关推荐