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