Ответьте на "горячую клавишу" в приложении в Qt - PullRequest
23 голосов
/ 03 декабря 2010

У меня есть простое приложение Qt, и я просто хочу ответить на клавишу F12 , независимо от того, какой виджет имеет фокус.

Есть какой-нибудь легкий сигнал или что-то, к чему я могу подключиться?

Я хочу использовать клавишу F12 для включения / выключения полноэкранного режима главного окна.

Ответы [ 2 ]

27 голосов
/ 03 декабря 2010

Я не пробовал, но вот что я бы сделал:

Создайте QShortcut и убедитесь, что его контекст setContext()) равен Qt::ApplicationShortcut.

shortcut = new QShortcut(QKeySequence(Qt::Key_F12), parent);
shortcut->setContext(Qt::ApplicationShortcut);

Тогда вам просто нужно подключить слот к сигналу QShortcut :: activ () .

2 голосов
/ 20 февраля 2016

Если у вас есть «центральный виджет», все остальные виджеты которого являются дочерними, то вы можете просто установить его как аргумент виджета для QShortcut.

(Python, qt5)

self.centralwidget = QtWidgets.QWidget(MainWindow)

QtWidgets.QShortcut(QtGui.QKeySequence("F12"), self.centralwidget, self.goFullScreen)

Я добавил это как ответ, потому что контекстный флаг ярлыка: Qt.ApplicationShortcut не работал для меня.

...