PyQt4全局快捷键?

发布于 2024-09-08 01:15:57 字数 588 浏览 4 评论 0原文

我有一个应用程序将多个子窗口小部件作为单独的窗口打开,如下所示:window1 打开窗口 2,窗口 2 打开窗口 3(简化形式)。

在主窗口中,我将 CTRL+Q 设置为退出快捷方式。下面是主类的精简示例。

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.actionExit = QtGui.QAction(_('E&xit'),self)
        self.actionExit.setShortcut('Ctrl+Q')
        self.actionExit.setStatusTip(_('Close application'))
        self.connect(self.actionExit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

现在,如果我打开第三个子项并按 CTRL+Q,则什么也不会发生。有没有办法让孩子们继承退出快捷键或使快捷方式全局化,还是我必须在每个孩子中声明它?

I have an application that opens multiple children widgets as separate windows, something like this: window1 opens window 2 which opens window 3 (simplified form).

In the main window I have set CTRL+Q as the quit shortcut. Below is a stripped down example of the main class.

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.actionExit = QtGui.QAction(_('E&xit'),self)
        self.actionExit.setShortcut('Ctrl+Q')
        self.actionExit.setStatusTip(_('Close application'))
        self.connect(self.actionExit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

Right now if I open the third child and push CTRL+Q nothing happens. Is there a way so that the children inherit the shortcut key for quit or to make the shortcut global or do I have to declare it in each of them?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱你是孤单的心事 2024-09-15 01:15:57

这是我在 __init__ 函数中使用的内容:
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self, self.close)

运行顺利!

Here is what I have used in __init__ function:
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self, self.close)

It works smoothly!

弄潮 2024-09-15 01:15:57

尝试设置 ShortcutContext

self.actionExit.setShortcutContext(QtCore.Qt.ApplicationShortcut)

Try setting the ShortcutContext.

self.actionExit.setShortcutContext(QtCore.Qt.ApplicationShortcut)
2024-09-15 01:15:57

您还可以直接为 QAction 设置快捷方式:

self.actionExit.setShortcut(QtGui.QKeySequence("Ctrl+Q"))

此示例与您的代码之间的唯一区别是 Ctrl+Q 首先转换为 QtGui.QKeySequence

You can also just set a shortcut for your QAction directly:

self.actionExit.setShortcut(QtGui.QKeySequence("Ctrl+Q"))

The only difference between this example and your code is that the Ctrl+Q is first cast to QtGui.QKeySequence.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文