Russian Qt Forum
Ноябрь 18, 2024, 08:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
глобальное отлавливание событий мыши\клавы
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: глобальное отлавливание событий мыши\клавы (Прочитано 5142 раз)
vux
Гость
глобальное отлавливание событий мыши\клавы
«
:
Ноябрь 14, 2012, 14:59 »
Можно ли отслеживать движение мыши, например, без видимых виджетов? То есть назначил eventFilter на QApplication и отлавливаешь мышь пока не отключиться фильтер, внезависимости от того что под мышой, да хоть и над левое окно левой программы.
Или может както вывести виджет нужного куска и чтоб он был невидимым но чтобы все события ловились.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #1 :
Ноябрь 14, 2012, 15:01 »
Средствами Qt нельзя, а вообще поиск рулит, т.к. таких вопросов здесь полно уже было.
Записан
Qt 5.11/4.8.7 (X11/Win)
kibsoft
Хакер
Offline
Сообщений: 625
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #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
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #3 :
Ноябрь 14, 2012, 16:03 »
или подрубать либу Qxt , в ней что то похожее было, вроде как работает кроссплатформенно
Записан
Bepec
Гость
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #4 :
Ноябрь 14, 2012, 18:07 »
Ну ненадо так пугать сразу.
Отслеживать движение мыши можно - QCursor::pos позволяет получать координаты мыши в текущий момент, даже если на экране не имеется виджетов (hide или tray).
Прикручиваем к нему таймер и получаем то что надо за короткое время.
Конечно это не очень корректно по отношению к коду и практицизму, но это:
1) работает
2) не грузит систему
3) кроссплатформенно(по идее, что QCursor:pos отрабатывать будет одинакого в любых системах)
Записан
vux
Гость
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #5 :
Ноябрь 14, 2012, 20:36 »
Тут такая ситуация:
1. Есть программа не кутешная.
2. В ней встроен питон 2.6.
3. В системе у меня (линукс) стоит куте 4.8.3. Я собрал пикуте и запускаю в цикле программы.
4. Хочеться над другим не-кутешным окном на определенный промежуток времени захватывать координаты мыши при каждом ее движении средствами пикуте.
Записан
Bepec
Гость
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #6 :
Ноябрь 14, 2012, 20:48 »
Попробуй и посмотри как работает QCursor::pos(). Если оно возвращает правильные координаты используй его.
PS хотя если
Цитировать
над другим не-кутешным окном
, то это уже должны быть платформозависимые функции. Ибо определить что окно под курсором - можно лишь платформенными функциями.
Записан
vux
Гость
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #7 :
Ноябрь 14, 2012, 20:52 »
Про qcursor знал просто, не пользовавшись таймерами, не пологал как прикрутить не виджетный отлов этого qcursor.
Спасибо буду пробовать
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: глобальное отлавливание событий мыши\клавы
«
Ответ #8 :
Ноябрь 14, 2012, 21:19 »
Цитата: vux от Ноябрь 14, 2012, 20:36
4. Хочеться над другим не-кутешным окном на определенный промежуток времени захватывать координаты мыши при каждом ее движении средствами пикуте.
В расчетных задачах эту роль играет метод Эйлера. Всем давно известно что он плох - патологически неустойчив. Но он настолько привлекателен для реализации что интерес к нему вспыхивает снова и снова. И тут уж ничего не попишешь, просто "это пройдет".
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...