2010-12-03 8 views
22

Ich habe eine einfache Qt-App, und ich möchte nur auf die F12 Schlüssel, unabhängig davon, welches Widget hat den Fokus.Reagieren auf Anwendung "Hotkey" in Qt

Gibt es ein einfaches Signal oder etwas, an das ich mich anschließen kann?

Ich möchte den F12 Schlüssel verwenden, um das Hauptfenster Vollbild ein-/auszuschalten.

+0

Stellen Sie sicher, dass der Benutzer das konfigurieren kann. Es gibt mehrere andere Programme, die dieselbe Funktion haben. – Falmarri

+0

Falmarri: nicht sicher, was du meinst. Soll der Benutzer entscheiden, welcher Hotkey zum Umschalten in den Vollbildmodus verwendet werden soll? Danke. – sidewinderguy

Antwort

26

ich nicht versucht haben, aber hier ist das, was ich tun würde:

ein QShortcut erstellen und stellen Sie sicher sein context (mit setContext()) ist Qt::ApplicationShortcut.

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

Dann brauchen Sie nur einen Schlitz zum QShortcut::activated() Signal zu verbinden.

+0

Perfekt! Genau das habe ich gebraucht. Danke für die schnelle Antwort! :-D – sidewinderguy

+0

Dies ist eines dieser Dinge, wo man es sofort sieht, wenn man es einmal sieht. Aber bevor du es mir gezeigt hast, hatte ich keine Ahnung. ;-) – sidewinderguy

+0

Es scheint auch einfacher zu sein widget wide shortcuts zu benutzen als das Filtern von QKeyEvents – Max13

1

Wenn Sie ein "zentrales Widget" haben, in dem alle anderen Widgets untergeordnet sind, können Sie dies einfach als Widget-Argument für QShortcut festlegen.

(Python, QT5)

self.centralwidget = QtWidgets.QWidget(MainWindow) 

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

Ich habe dies als eine Antwort, weil die Verknüpfung Kontext-Kennzeichen: Qt.ApplicationShortcut nicht für mich arbeiten.