0

この奇妙な問題に苦労しています。プロジェクトにいくつかの QLineEdit ウィジェットを配置し、クリックするだけですべてのテキストを選択 (強調表示) しようとしました。これはすでに機能していましたが、この機能を同じ QLineEdit 親の他のクラスに拡張したいと考えました。私はこの小さなインターフェースを作りました:

class EditInterface(QtGui.QLineEdit):
    def __init__(self, parent):
        super(EditInterface, self).__init__(parent)
        self.focus = False
        self.setFocusPolicy(QtCore.Qt.StrongFocus)

    def mousePressEvent(self, event):
        ret = QtGui.QLineEdit.mousePressEvent(self, event)
        if not self.focus:
            self.selectAll()
            self.focus=True
        else:
            self.deselect()
        return ret

    def focusInEvent(self,event):
        self.focus=True
        return QtGui.QLineEdit.focusInEvent(self,event)

    def focusOutEvent(self,event):
        self.focus=False
        return QtGui.QLineEdit.focusOutEvent(self,event)

現在、まったく機能していません。私は単にこれを行う場合:

def mousePressEvent(self, event):
    ret = QtGui.QLineEdit.mousePressEvent(self, event)
    self.selectAll()
    return ret

その後、正常に動作していますが、すべてを何度も選択するだけでなく、他のマウス操作を有効にしたいと考えています。問題は self.focus 変数にあるようですが、私は Python の経験がなく、何が起こっているのかわかりません。私のプロジェクトでは他のすべてがうまく機能しているので、ここに投稿することはスキップします。前もって感謝します

編集:私は問題を見つけました。 それは継承ではなく、イベントに関するものでした。focusInEvent は mousePressEvent の前に呼び出されるため、selectAll() を呼び出すことは不可能でした。

4

0 に答える 0