Название: Global hotkeys Отправлено: QCasper от Ноябрь 29, 2007, 12:09 Собсно сабж. Как отловить и обработать нажатие клавиши (или их комбинаций), даже если виджет не имеет фокус или спрятан? Или даже если его вообще нет и не было...
Название: Re: Global hotkeys Отправлено: ритт от Ноябрь 29, 2007, 12:22 в libqxt глобальные хоткеи видел...можно оттуда тренькнуть
Название: Re: Global hotkeys Отправлено: Dodge от Ноябрь 29, 2007, 14:08 в libqxt глобальные хоткеи видел...можно оттуда тренькнуть +1.Я вообще выдергивал код из psi. Единственная заморочка с этим, точто psi на qt 3 )) Название: Re: Global hotkeys Отправлено: pastor от Ноябрь 29, 2007, 14:46 Единственная заморочка с этим, точто psi на qt 3 )) Уже есть и на Qt4 http://forum.psi-im.org/thread/4659 Название: Re: Global hotkeys Отправлено: IGHOR от Ноябрь 15, 2008, 21:08 Единственная заморочка с этим, точто psi на qt 3 )) Уже есть и на Qt4 http://forum.psi-im.org/thread/4659 Кто небуть достал от туда код глобальных клавиш ? Название: Re: Global hotkeys Отправлено: BRE от Ноябрь 15, 2008, 22:02 Кто небуть достал от туда код глобальных клавиш ? Посмотрел, вроде все нужное лежит отдельно в /src/tools/globalshortcut.Название: Re: Global hotkeys Отправлено: Prm от Сентябрь 16, 2009, 13:15 Можно проще. Создаем класс ShortCutter, вставляем экземпляр в main(). Все события валятся в написанную нами функцию. Быстро, просто, кроссплатформенно!
#ifndef SHORTCUTTER_H_ #define SHORTCUTTER_H_ #include <QEvent> #include <QObject> class ShortCutter: public QObject { protected: bool eventFilter(QObject *obj, QEvent *ev) { //ловим и обрабатываем все события приложения } public: ShortCutter() { QApplication::instance()->installEventFilter(this); }; virtual ~ShortCutter(); }; #endif /* SHORTCUTTER_H_ */ int main(int argc, char *argv[]) { QApplication a(argc, argv); ShortCutter sc; .... } Название: Re: Global hotkeys Отправлено: Alex Custov от Сентябрь 16, 2009, 17:38 //ловим и обрабатываем все события приложения ключевая ошибка Название: Re: Global hotkeys Отправлено: Prm от Сентябрь 17, 2009, 11:18 Разве это ошибка :). В топике явно не указано, что интересуют именно события системы, вот и попутал немного.
Но для приложения вариант классный! Название: Re: Global hotkeys Отправлено: Alex Custov от Сентябрь 17, 2009, 13:03 Разве это ошибка :). В топике явно не указано, что интересуют именно события системы, вот и попутал немного. Здрастье, в теме это указано два раза :) Название: Re: Global hotkeys Отправлено: jeno от Апрель 26, 2010, 00:43 Прошу прощения, попробовал использовать ваш класс (ShortCutter) в своем приложении, при сборке выдает ошибки =(
tmp/obj/release_shared/main.o:main.cpp::-1: error: undefined reference to `vtable for ShortCutter' tmp/obj/release_shared/main.o:main.cpp::-1: error: undefined reference to `ShortCutter::~ShortCutter()' tmp/obj/release_shared/main.o:main.cpp::-1: error: undefined reference to `ShortCutter::~ShortCutter()' :-1: error: collect2: ld returned 1 exit status вот так вот в main.cpp: Код
а вот так вот shapedclock.h: Код
как это можно исправить? =\ (хотел бы использовать этот класс для глобальных горячих клавиш в своем приложении) OS: windows 7 Qt: 4.6 (qt creator 1.3.0) Название: Re: Global hotkeys Отправлено: Пантер от Апрель 26, 2010, 06:16 virtual ~ShortCutter() {}
Название: Re: Global hotkeys Отправлено: jeno от Апрель 26, 2010, 10:59 а оно должно ловить сигналы системы ?
вот я сделал qDebug() << ev; , когда моя программа активна (фокус на ней), нажимаю на клавиши и получаю: QKeyEvent(KeyRelease, 4f, 0, ""o"", false, 1) QKeyEvent(KeyRelease, 57, 0, ""w"", false, 1) QKeyEvent(KeyRelease, 45, 0, ""e"", false, 1) QKeyEvent(KeyRelease, 52, 0, ""r"", false, 1) а когда нажимаю на любой другую программу (например, проводник windows), в debug только сообщения QPaintEvent и т.п. :-\ (те.сообщений о нажатии клавиш нет) пс.мне оно надо для глобальных горячих клавиш в моей программе, например что при просмотре фильма можно было менять громкость определенной комбинацией клавишь... Название: Re: Global hotkeys Отправлено: pastor от Апрель 26, 2010, 11:13 пс.мне оно надо для глобальных горячих клавиш в моей программе, например что при просмотре фильма можно было менять громкость определенной комбинацией клавишь... Помоему в топике об этом сказано, что ShortCutter работает только в приделах приложения |