У меня есть QCompleter в столбце QTableWidget. Как только пользователь начнет редактирование, я бы хотел, чтобы всплывающее окно всплыло, а не дожидалось, пока он введет текст. Я подклассифицировал функцию setEditorData в QStyledItemDelegate, чтобы сделать это, что мне кажется наиболее целесообразным, однако, когда я вызываю 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)