Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мультимедиа клавиши
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Мультимедиа
urandom
приветствую.

хотел бы узнать, как можно в Qt обработать нажатие на мультимедийные клавиши?
погуглил, информации мало. печалька..
может кто уже сталкивался?

если не мультимедиа, то хотя бы как отловить нажатия на стандартные кнопы (глобально)?
BlueIceScream
Qt::Key_MediaPlay 0x01000080
Qt::Key_MediaStop 0x01000081
Qt::Key_MediaPrevious 0x01000082
Qt::Key_MediaNext 0x01000083
Qt::Key_MediaRecord 0x01000084
Qt::Key_MediaPause 0x1000085
Qt::Key_MediaTogglePlayPause 0x1000086

Также :

"Key events for multimedia keys are ignored by default. You should call accept() if your widget handles those events."

Для глобального отлавливания событий нажатия клавиш клавиатуры, придется использовать глобальные ловушки. Для каждой операционной системы делается это различными способами. Кросплатформенной реализации в Qt для таких методов нет. Другое дело если предполагается использование вашей программы в операционной системе без потери фокуса. Тогда отлавливание глобальных событий нажатия клавиш сводится к отлавливанию их на локальном (в очередях событий вашей программы) уровне. Для упрощения создания кросплатформенности вы можете перенести процедуры создания глобальных ловушек в отдельные библиотеки. Глобальные ловушки дадут вам возможность использовать возможности системы по определению медиа клавиш на клавиатуре. Это значит что вы сможете обрабатывать эти клавиши, даже тогда, когда возможностей по определению их с помощью констант Qt будет недостаточно.
urandom
огромное спасибо, а можно пример подобной ловушки?
BlueIceScream
Вот пример для операционной системы Windows:

http://www.codeproject.com/KB/DLL/keyboardhook.aspx

Для системы XWindow придется использовать функции из XLib. Например XGrabKey

http://tronche.com/gui/x/xlib/input/XGrabKey.html


Sokoloff
Цитата(urandom @ 26.11.2011, 12:08) *
огромное спасибо, а можно пример подобной ловушки?

По рукам ходят 2 версии глобальных хоткеев на Qt. Первая - кусок libqxt, вторая ЕМНИП выдрана из PSi.
Вот PSi-хованная версия
Использовать очень просто:
#include "globalshortcutmanager.h"
...
    GlobalShortcutManager::instance()->connect(QKeySequence("Alt+F2"), this, SLOT(showHide()));



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.