Russian Qt Forum
Сентябрь 30, 2024, 12:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: глобальное отлавливание событий мыши\клавы  (Прочитано 5103 раз)
vux
Гость
« : Ноябрь 14, 2012, 14:59 »

Можно ли отслеживать движение мыши, например, без видимых виджетов? То есть назначил eventFilter на QApplication и отлавливаешь мышь пока не отключиться фильтер, внезависимости от того что под мышой, да хоть и над левое окно левой программы.

Или может както вывести виджет нужного куска и чтоб он был невидимым но чтобы все события ловились.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 14, 2012, 15:01 »

Средствами Qt нельзя, а вообще поиск рулит, т.к. таких вопросов здесь полно уже было.
Записан

Qt 5.11/4.8.7 (X11/Win)
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #2 : Ноябрь 14, 2012, 15:18 »

Недавно постил в кладовую готовых решений: Ловим глобальные события системы с помощью хуков (клавиатура, мышь и т.д.)
Это решение для винды.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Ноябрь 14, 2012, 16:03 »

или подрубать либу Qxt , в ней что то похожее было, вроде как работает кроссплатформенно Улыбающийся
Записан
Bepec
Гость
« Ответ #4 : Ноябрь 14, 2012, 18:07 »

Ну ненадо так пугать сразу.

Отслеживать движение мыши можно - QCursor::pos позволяет получать координаты мыши в текущий момент, даже если на экране не имеется виджетов (hide или tray).

Прикручиваем к нему таймер и получаем то что надо за короткое время.

Конечно это не очень корректно по отношению к коду и практицизму, но это:
1) работает
2) не грузит систему
3) кроссплатформенно(по идее, что QCursor:pos отрабатывать будет одинакого в любых системах)
Записан
vux
Гость
« Ответ #5 : Ноябрь 14, 2012, 20:36 »

Тут такая ситуация:
1. Есть программа не кутешная.
2. В ней встроен питон 2.6.
3. В системе у меня (линукс) стоит куте 4.8.3. Я собрал пикуте и запускаю в цикле программы.
4. Хочеться над другим не-кутешным окном на определенный промежуток времени захватывать координаты мыши при каждом ее движении средствами пикуте.
Записан
Bepec
Гость
« Ответ #6 : Ноябрь 14, 2012, 20:48 »

Попробуй и посмотри как работает QCursor::pos(). Если оно возвращает правильные координаты используй его.

PS хотя если
Цитировать
над другим не-кутешным окном
, то это уже должны быть платформозависимые функции. Ибо определить что окно под курсором - можно лишь платформенными функциями.
Записан
vux
Гость
« Ответ #7 : Ноябрь 14, 2012, 20:52 »

Про qcursor знал просто, не пользовавшись таймерами, не пологал как прикрутить не виджетный отлов этого qcursor.
Спасибо буду пробовать
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Ноябрь 14, 2012, 21:19 »

4. Хочеться над другим не-кутешным окном на определенный промежуток времени захватывать координаты мыши при каждом ее движении средствами пикуте.
В расчетных задачах эту роль играет метод Эйлера. Всем давно известно что он плох - патологически неустойчив. Но он настолько привлекателен для реализации что интерес к нему вспыхивает снова и снова. И тут уж ничего не попишешь, просто "это пройдет". 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.