特定小部件的 PyQt / PySide 键盘快捷键

jdb*_*org 5 python qt pyqt pyside

我正在尝试使用 QShortcut 设置键盘快捷键,仅适用于某个小部件聚焦时。

我认为通过设置父母,这会起作用。例如:

QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Return"), self.myWidget, self.doSomething)
Run Code Online (Sandbox Code Playgroud)

但是,当按下 Ctrl+Return 时就会触发此事件。我知道我可以通过子类化QWidget和覆盖来做到这一点setShortcut,但这似乎太过分了?

有更容易的方法吗?

(答案可以用 C++ 编写)

加上:

QShortcutContext 我认为这可以使用http://pyqt.sourceforge.net/Docs/PyQt4/qshortcut.html来完成,但是

QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Return"), self.myWidget, self.doSomething, context=QtCore.Qt.WidgetShortcut)
Run Code Online (Sandbox Code Playgroud)

也不行。

jdb*_*org 2

这是由于 PyQt 中的错误造成的,升级到 4.10.3 已经解决了该问题,意味着我可以使用快捷方式上下文来获得所需的结果。