Работа с глобальными хоткеями в Windows является более тривиальной задачей, чем в Linux, поскольку в WinAPIимеются для этого подготовленные методы, которые не требуют большого количества кода. А также каждому хоткею устанавливается в соответствие ID , по которому данный хоткей можно удалить.
В Linux/Unix , которые используют графический сервер X11, применительно к Qt необходимо использовать функции для регистрации/разрегистрации хоткеев из библиотеки XLib, но обрабатывать приходится получаемые значения с помощью функционала библиотеки XCB, которая разрабатывается как аналог библиотеки XLib , но является более низкоуровневой и написана на языке программирования Си. Как и в случае с Windows, для обработки глобальных хоткеев в Qt 5.5 используется метод nativeEventFilter. Предлагаю сделать отдельный класс, наследованный от QAbstractNativeEventFilterдля обработки хоткеев и установить данный фильтр на всё приложение.
Для установки хоткеев будут использоваться функции XKeysymToKeycode (для получения кода клавиши из последовательности KeySym) и XGrabKey (для установки хоткея).
Для разрегистрации хоткея будет использоваться функция XUngrabKey .
Структура проекта
- GlobalHotkeyLinux.pro - профайл проекта;
- mainwindow.h - заголовочный файл главного окна приложения;
- mainwindow.cpp - файл исходных кодов главного окна приложения;
- mainwindow.ui - файл формы главного окна приложения;
- main.cpp - основной файл исходных кодов;
- nativeeventfilter.h - заголовочный файл фильтра событий хоткеев;
- nativeeventfilter.cpp - файл исходных кодов фильтра событий хоткеев.
![]()
Это интересно
0
|
|||
Последние откомментированные темы: