Cómo utilizar las teclas de acceso rápido globales de Qt
Si queremos añadir nuestra propia tecla de acceso rápido global, basta con utilizar la función RegisterHotKey. El prototipo de función es:
BOOL RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk);
El tipo HWND es el tipo de identificador de ventana en Windows y en Qt, QWidget y sus subclases están disponibles a través de la función winId().
El segundo parámetro es el tipo de operación atómica, que se puede obtener mediante la función ATOM GlobalAddAtom(LPCTSTR lpString). Esta también es una API Win32 que proporciona un valor único basado en un argumento de cadena. Después de su uso, todo el ATOM debe eliminarse utilizando la función GlobalDeleteAtom, cuyo prototipo de función es ATOM GlobalDeleteAtom (ATOM nAtom).
Los dos últimos parámetros, uno es una tecla modificadora y el otro es una tecla normal. Por ejemplo, suponiendo que queremos registrar la combinación de teclas de acceso rápido Ctrl+F4, fsModifiers sería MOD_CONTROL y vk sería VK_F4.
Si el registro es exitoso, devuelve verdadero; de lo contrario, devuelve falso.
Tenga en cuenta que debe utilizar la función UnregisterHotKey para cerrar sesión después de su uso; de lo contrario, es posible que esta tecla de acceso rápido ya no se registre a menos que reinicie. El prototipo de función es el siguiente: BOOL UnregisterHotKey(HWND hWnd, int id).
OK, se completó el registro de teclas de acceso rápido. Cuando se presiona la tecla de acceso rápido, recibiremos un mensaje en la función winEventFilter en QApplication. Como se mencionó anteriormente, necesitamos saber si uno de los elementos del mensaje de mensaje es WM_HOTKEY. En la estructura MSG, hay dos elementos más que quizás necesitemos conocer, a saber, wParam y lParam. wParam es la identificación utilizada para registrar la tecla de acceso rápido, es decir, ATOM (átomo). lParam es nuestra tecla de acceso rápido. En realidad, es un tipo de 32 bits, donde los primeros 16 bits representan claves normales y los últimos 16 bits representan claves modificadoras.