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)

这仅适用于所有其他密钥版本。第一个被忽略,第二个有效,第三个失败,第四个有效,依此类推。是否实现 keyPressEvent、是否放入 event.accept() 或之后是否调用基本实现都无关紧要。这些对行为没有影响。

我正在使用它在 QGraphicsView 中制作可拖动的地图。如果我实现 keyPressEvent 并拖动地图,只要我在每次按键之间操作地图,就永远不会调用 keyReleaseEvent。

有什么想法吗?

4

1 回答 1

0

对我来说,Alt 键是一个修饰键,这对我来说很重要,它是由event.modifiers()方法识别的。检查这个:

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 回答