0

Qt 4.7 で PySide を使用していますが、QMainWindow の keyReleaseEvent に問題があります。コードは次のとおりです。

def keyReleaseEvent(self, event):
    if event.key() == QtCore.Qt.Key_Alt:
        print 'Alt Key Released'
        if self.pointerTypeGroup.checkedId() != self.scene.HandDrag:
            print "Disabling Drag"
            self.pointerGroupClicked(self.pointerTypeGroup.checkedId())
            #event.accept()
    #super(MainWindow, self).keyPressEvent(event)

これは、他のすべてのキー リリースでのみ機能します。1 つ目は無視され、2 つ目は機能し、3 つ目は失敗し、4 つ目は機能し、というように続きます。keyPressEvent を実装するかどうか、event.accept() を配置するかどうか、または後で基本実装を呼び出すかどうかは問題ではありません。それらは動作に影響を与えません。

これを使用して、QGraphicsView でマップをドラッグ可能にしています。keyPressEvent を実装してマップをドラッグすると、キーを押すたびにマップを操作する限り、keyReleaseEvent は呼び出されません。

何が起こっているのですか?

4

1 に答える 1

0

event.modifiers()Alt キーが修飾キーであり、メソッドによって識別されることは、私にとってはベルを鳴らします。これをチェックして:

def keyPressEvent(self, event):
    if event.key() == QtCore.Qt.Key_O and ( event.modifiers() & QtCore.Qt.ALT ):
        print 'yeah' # Or your actual action code

参考までに、 QtCore.Qt 名前空間リファレンスを確認してください。お役に立てれば!

私はこのブログ投稿に導かれました

于 2012-08-29T14:02:52.497 に答える