2010-12-03 12 views
22

Tengo una aplicación Qt simple, y solo quiero responder a la clave F12, independientemente de qué widget tenga foco.Responder a la "tecla de acceso directo" de toda la aplicación en Qt

¿Hay alguna señal fácil o algo que pueda enganchar?

Quiero utilizar la F12 tecla para activar/desactivar la ventana principal de pantalla completa.

+0

Asegúrese de que el usuario configure eso. Hay muchos otros programas que tienen exactamente la misma característica. – Falmarri

+0

Falmarri: no estoy seguro de lo que quieres decir. ¿Quiere decir que el usuario decida qué tecla de acceso rápido usar para alternar al modo de pantalla completa? Gracias. – sidewinderguy

Respuesta

26

no lo he probado, pero aquí es lo que haría:

Crear una QShortcut y asegúrese de que su context (con setContext()) es Qt::ApplicationShortcut.

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

Entonces sólo tiene que conectar una ranura a la señal QShortcut::activated().

+0

¡Perfecto! Eso es exactamente lo que necesitaba. ¡Gracias por la rápida respuesta! :-D – sidewinderguy

+0

Esta es una de esas cosas en las que una vez que ves cómo hacerlo, parece obvio. Pero antes de que me mostraras, no tenía ni idea. ;-) – sidewinderguy

+0

Parece que también es más fácil usar accesos directos de widget que filtrar QKeyEvents – Max13

1

Si tiene un "widget central" del que todos los otros widgets son hijos, entonces simplemente puede configurarlo como el argumento del widget para QShortcut.

(Python, QT5)

self.centralwidget = QtWidgets.QWidget(MainWindow) 

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

he añadido esto como una respuesta porque la bandera contexto de acceso directo: Qt.ApplicationShortcut no funcionó para mí.

Cuestiones relacionadas