我在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。
任何想法发生了什么?
答案 0 :(得分: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 namespace reference。希望这有帮助!
指导