![]() |
|
|
![]()
|
|
| bvn13 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
хочется что-то наподобие горячих клавиш ВинАмпа. Т.е. у себя я задаю горячую клавишу и обработчик для нее (в виде строковой переменной, просто набор символов), а при нажатии на этот хоткей (в любом приложении Винды), перехватить эту комбинацию. Так вот не могу понять, как можно задать такой вид HotKey-ев. Это же получается, глобальные хоткеи? Если так, то можно ли через QT Creater 4.x (какой там свежий с сайта?) задать эти HotKey-и и как это сделать проще?
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В Qt никак. Использовать сторонние разработки: http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html
|
|||
|
||||
| bvn13 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
А эта библа нормально становится на MSVS? (Qt уже стоит на MSVS). Какие-нибудь недокументированные действия или особенности есть? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Никогда не пробовал.
|
|||
|
||||
| Fortnox |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 31.10.2008 Где: Ростов-на-Дону Репутация: нет Всего: 22 |
Недавно пришлось реализовывать глобальные горячие клавиши через Qt, помучился изрядно, но в итоге получилось.
В заголовочном файле добавляем windows.h для API функций. Потом, согласно MSDN, объявляем нашу горячую клавишу и ее значение. Далее, куря доки Qt, находим: чтобы клавиши перехватывались на уровне системы, фильтр событий нужно вешать на QAbstractEventDispatcher::instance(). На данный момент добавляем в заголовочный файл следующее:
Теперь дело за cpp файлом.
И потом, когда не нужна будет горячая клавиша, удаляем ее:
Вот такое вот "чудо" получилось. P.S. libqxt пытался использовать, но не получилось почему то, горячие клавиши так и не хотели срабатывать. Это сообщение отредактировал(а) Fortnox - 26.9.2009, 10:42 |
||||||
|
|||||||
| bvn13 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
Вот за это спасибо. Буду пробовать. libqxt мне вообще не удалось на MSVS насадить. Не может найти заголовочные файлы при их подключении и все тут. |
|||
|
||||
| bvn13 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
Вчитался только в твой код... Я чего-то себе как-то по-другому представлял логику работы с глобальными клавишами... Я думал, что надо четко привязывать процедуру к событию нажатия... Чуть ли не для конкретной комбинации клавиш - свою процедуру. Я тут хочу организовать динамический список горячих клавиш и действий по ним. Вот и думаю, если писать что-то похожее на твою реализацию, то как мне определить, какая сейчас комбинация была нажата? |
|||
|
||||
| Fortnox |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 31.10.2008 Где: Ростов-на-Дону Репутация: нет Всего: 22 |
Если не ошибаюсь, но в структуре MSG либо WPARAM, либо LPARAM cодержит код нажатой (или нажатых) клавиш(ы).
Я до сих пор "шаманю" с горячими клавишами, вечно то ломаю, то заставляю работать нормально, но нормального стабильного результата так и не добился, пока. Можно посмотреть исходники qmmp, там глобальные горячие клавиши. Код, как я представляю, будет выглядеть так:
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |