2010-12-03 2 views
22

J'ai une application Qt simple, et je veux juste répondre à la clé F12, quel que soit le widget a le focus.Répondre à toute la demande "hotkey" dans Qt

Y at-il un signal facile ou quelque chose que je peux accrocher?

Je souhaite utiliser la touche F12 pour activer/désactiver la fenêtre principale en mode plein écran.

+0

Veillez à laisser l'utilisateur configurer cela. Il existe plusieurs autres programmes qui ont exactement la même fonctionnalité. – Falmarri

+0

Falmarri: je ne sais pas ce que tu veux dire. Voulez-vous dire à l'utilisateur de décider quel raccourci clavier utiliser pour basculer en mode plein écran? THX. – sidewinderguy

Répondre

26

Je ne l'ai pas essayé, mais voici ce que je ferais:

Créer une QShortcut et assurez-vous que son context (avec setContext()) est Qt::ApplicationShortcut.

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

Ensuite, il vous suffit de connecter une fente au signal QShortcut::activated().

+0

Parfait! C'est exactement ce dont j'avais besoin. Merci pour la réponse rapide! :-D – sidewinderguy

+0

Ceci est l'une de ces choses où une fois que vous voyez comment le faire, il semble évident. Mais avant de me montrer, je n'avais aucune idée. ;-) – sidewinderguy

+0

Il semble également être plus facile d'utiliser des raccourcis larges que le filtrage QKeyEvents – Max13

1

Si vous avez un "widget central" dont tous les autres widgets sont des enfants, alors vous pouvez simplement définir cela comme l'argument du widget pour QShortcut.

(Python, QT5)

self.centralwidget = QtWidgets.QWidget(MainWindow) 

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

J'ajouté comme une réponse parce que le drapeau de contexte de raccourci: Qt.ApplicationShortcut ne fonctionne pas pour moi.

Questions connexes