4

シフトキーが押されたときにキャッチしたいQLineEditがあります。

これが私のコードです:

class NoteText(QtGui.QLineEdit):
    def __init__(self, parent):
        super (NoteText, self).__init__(parent)

    def keyPressEvent(self, event):
        if (event.modifiers() & QtCore.Qt.ShiftModifier):
            self.shift = True
            print 'Shift!'

ご想像のとおり、Shiftキーを押すことはできますが、LineEditにテキストを入力することはできません。キーが押されたときにキャッチしようとしましたが、ユーザーがウィジェットに入力し続けることができるように、キーが押された場合の対処方法がよくわかりません。

私は何が欠けていますか?ありがとう!

4

1 に答える 1

6

基本クラスの実装を呼び出す必要があるオーバーライドされたkeyPressEventメソッドのデフォルトの動作が必要だと思います。次のようになります。

def keyPressEvent(self, event):
    if (event.modifiers() & QtCore.Qt.ShiftModifier):
        self.shift = True
        print 'Shift!'
    # call base class keyPressEvent
    QtGui.QLineEdit.keyPressEvent(self, event)

これがお役に立てば幸いです

于 2011-02-19T01:20:19.027 に答える