立即在QStyledItemDelegate中弹出QCompleter,而无需输入文本

问题描述 投票:0回答:1

我在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函数细分为子类...

python pyqt pyqt4
1个回答
0
投票

显示小部件时必须调用complete(),为此,您可以使用complete()方法:

© www.soinside.com 2019 - 2024. All rights reserved.