PyQt4 全局快捷键?
我有一个应用程序,它可以打开多个子窗口,像这样:窗口1打开窗口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,什么都不会发生。有没有办法让这些子窗口也能使用这个退出的快捷键,或者让这个快捷键变成全局的?还是说我必须在每个子窗口中都单独设置一次?
3 个回答
1
你也可以直接为你的 QAction 设置一个快捷键:
self.actionExit.setShortcut(QtGui.QKeySequence("Ctrl+Q"))
这个例子和你的代码唯一的不同就是,Ctrl+Q
首先被转换成了 QtGui.QKeySequence
这种格式。
3
试着设置一下 快捷键上下文。
self.actionExit.setShortcutContext(QtCore.Qt.ApplicationShortcut)
12
在我的__init__
函数里,我用了这个:
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self, self.close)
这个功能运行得很顺利!