tags:

views:

46

answers:

1

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?

+2  A: 

Try setting the ShortcutContext.

self.actionExit.setShortcutContext(QtCore.Qt.ApplicationShortcut)
Chris B.
@Chris B.: I tried that but for some reason it's not working, even if the children widgets have the parent set as the MainWindow :\
yoshi
Did you try `WindowShortcut` or `WidgetWithChildrenShortcut`?
Chris B.
I tried with all 4 options available for setShortcutContext but neither worked for the children.
yoshi