Russian Qt Forum

Qt => Вопросы новичков => Тема начата: hardigan от Апрель 05, 2012, 05:05



Название: Глобальные горячие клавиши.
Отправлено: hardigan от Апрель 05, 2012, 05:05
Здравствуйте!

В C++ новичок, решил начать изучение с QT. Не получается сделать глобальные клавиши у приложения.

Может кто-нибудь выложить готовый пример приложения с глобальными клавишами (делал на основе GUI приложения Qt)?
Или понятно объяснить)) Спасибо!

Пробовал через Qxtlib, не получилось её установить на Qt, ещё читал что можно через WinApi registerHotKey(), но не понятно как отлавливать это событие.

(Qt Creator 2.4.1, Основан на Qt 4.7.4 (32-х битной)).


Название: Re: Глобальные горячие клавиши.
Отправлено: sidsukana от Апрель 05, 2012, 06:37
Наверное не глобальные, а горячие.

Раз http://qt-project.org/doc/qt-4.8/qshortcut.html (создает шоткат горячую клавишу)
И два http://qt-project.org/doc/qt-4.8/QWidget.html (так как все виджеты унаследованы с QWidget то пользуемся методом setShortcutEnabled(id, enabled) где id = shortcut->id() для включения или выключения)
Связать шоткаты с действиями можно по их сигналам - например activated())


Название: Re: Глобальные горячие клавиши.
Отправлено: Bepec от Апрель 05, 2012, 07:01
Скорее глобальные, чем горячие.

Стандартными средствами Qt не получится, зато Qxt имеет даже специальный класс для этого!

PS ну или если только windows - то WinApi.

Все приведённые варианты ищутся на 1 странице поиска по гуглу.


Название: Re: Глобальные горячие клавиши.
Отправлено: hardigan от Апрель 05, 2012, 10:12
Мне достаточно только под windows. Искал, но заставить работать не получилось... Есть у кого рабочий пример?


Название: Re: Глобальные горячие клавиши.
Отправлено: Bepec от Апрель 05, 2012, 10:36
1) Врёшь.
2) Не искал.
3) Моё сообщение читал невнимательно.
4) Даже погуглить поленился.
5) Если оно тебе нафиг ненадо, то зачем я тебе ссылку давать буду?


Название: Re: Глобальные горячие клавиши.
Отправлено: Alex Custov от Апрель 05, 2012, 12:12
из Qxt добавляешь нужные классы в свой проект, и всё. Если чисто на win32 api, то например через RegisterHotKey и отлавливать события WM_HOTKEY внутри переопределённой функции QCoreApplication::winEventFilter. Второе в Qt не пробовал, пробовал только в чистом Win32 api приложении. Первое самое простое.