Qt 有没有办法在按钮释放时触发QShortcut?

Qt 有没有办法在按钮释放时触发QShortcut?,qt,pyside,pyside2,eventfilter,qshortcut,Qt,Pyside,Pyside2,Eventfilter,Qshortcut,我目前有这个,它的功能如预期,运行在键盘按钮按下 # QWidget == widget shortcut is assigned to shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_M), QWidget) shortcut.setContext(QtCore.Qt.ApplicationShortcut) shortcut.activated.connect(self.script_to_run) 我想让它

我目前有这个,它的功能如预期,运行在键盘按钮按下

# QWidget == widget shortcut is assigned to

shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_M), QWidget)
shortcut.setContext(QtCore.Qt.ApplicationShortcut)
shortcut.activated.connect(self.script_to_run)
我想让它在键盘按钮释放时运行

原因是,我想在按下按钮时运行一个脚本,然后在释放同一个按钮时运行一个单独的脚本


我尝试了一些不同的方法,
keyreleasevent()
eventFilter()
,但是我认为通过使用
QShortcut
这些事件会被抑制。

您是否尝试过事件过滤
keyPressEvent
keypreleaseevent
而不设置
QShortcut
?您到底在谈论哪个键盘按钮释放?对于ApplicationShortcut,任何小部件当前都可以具有键盘焦点,并且当快捷键仍被按下时,没有任何东西可以阻止用户按下和释放其他键。用户还可以使用鼠标将焦点转移到另一个窗口小部件,同时快捷键仍被按下。您可以在QApplication上安装事件筛选器以侦听所有按键释放,但要将特定的按键释放链接到以前的快捷键按下,这将非常棘手。@mugiseyebrows我想使用QShortcut,因为我正在将其设置为在Maya中工作。使用QShortcut可以设置快捷方式,以防止Maya的本机热键触发,而不管选择了哪个小部件。遗憾的是,这确实意味着keyEvents无法工作,因为它们似乎被QShortcut重载了。@ekhuro我觉得使用QShortcut重载我的主小部件中的所有输入是一种更干净的方法。唯一的问题是让释放的人开火。我想我可以使用双击的方法,如果可以的话,但是如果我能找到一个发布时的解决方案,那会更好。到目前为止,我一直反对使用EventFilter,因为我已经了解到这可能会导致一些速度减慢,并且需要我将其传递到多个小部件中,因为QShortcut只需要传递到其中一个小部件中。@Adamsirelle当激活快捷方式时,它会产生,这完全是由按键触发的。如果在QApplication上设置事件筛选器,您将看到密钥释放事件也会发生,但没有属性告诉您它们是否与快捷方式关联(更不用说哪个快捷方式了)。Qt根本不跟踪这些信息,所以您必须自己做。因此,如果您想要实现此功能,则不可避免地要进行某种类型的事件过滤。