PyQt4全局快捷方式?

时间:2010-07-02 21:34:40

标签: python pyqt pyqt4

我有一个应用程序可以打开多个子窗口小部件作为单独的窗口,如下所示:window1打开窗口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没有任何反应。是否有一种方法可以让孩子继承退出的快捷键或使快捷键成为全局,或者我必须在每一个中声明它?

3 个答案:

答案 0 :(得分:12)

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

它运作顺畅!

答案 1 :(得分:3)

尝试设置ShortcutContext

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

答案 2 :(得分:1)

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

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

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