MouseMove event за пределами окна |
Здравствуйте, гость ( Вход | Регистрация )
MouseMove event за пределами окна |
Гость_druss_* |
5.5.2010, 9:34
Сообщение
#1
|
Гости |
Как можно получать событие перемещения мыши если она перемещается за пределами окна (кнопка не нажата)?
Спасибо за ответ. |
|
|
BRE |
5.5.2010, 10:16
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
druss |
5.5.2010, 10:54
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 5.5.2010 Пользователь №: 1692 Спасибо сказали: 0 раз(а) Репутация: 0 |
смотрел, даже пробовал. Оно захватывает мышь, но не передает события дальше в систему...
|
|
|
BRE |
5.5.2010, 10:57
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
druss |
5.5.2010, 11:33
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 5.5.2010 Пользователь №: 1692 Спасибо сказали: 0 раз(а) Репутация: 0 |
void QWidget::setMouseTracking ( bool enable ) Да, но оно отвечает за высылку событий при перемещении без нажатия кнопок, за пределами окна оно все равно не высылает события. Если в
то оно обрабатывает все сообщения о передвижении мыши, но дальше виджета событие не идет, и я даже не могу мышкой закрыть приложения. так же пробовал
Тоже нормально не может передать события в систему. |
|
|
BRE |
5.5.2010, 11:37
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Для проверки, попробуй grabMouse() выполнять в конструкторе MainWindow.
Вообще, используется примерно следующий алгоритм: при каком-то событии,например, нажали кнопку мышки, происходит захват мыши и указанный виджет обрабатывает все события от мышки, а при отпускании кнопки, мышка освобождается. Это необходимо например, для обработки изменения размеров виджета. Посмотри, как реализовано изменение размеров в QMdiSubWindow. Сообщение отредактировал BRE - 5.5.2010, 11:39 |
|
|
druss |
5.5.2010, 11:42
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 5.5.2010 Пользователь №: 1692 Спасибо сказали: 0 раз(а) Репутация: 0 |
Для проверки, попробуй grabMouse() выполнять в конструкторе MainWindow. Runtime error. Вообще, используется примерно следующий алгоритм: при каком-то событии,например, нажали кнопку мышки, происходит захват мыши и указанный виджет обрабатывает все события от мышки, а при отпускании кнопки, мышка освобождается. Это необходимо например, для обработки изменения размеров виджета. Ну это понятно, но мне нужно без нажатия, просто что бы в мою программу всегда приходило событие о перемещении мыши, даже если окно программы свернуто. Вариант с grabMouse был бы самый раз, если бы он позволял нормально функционировать остальным приложениям. Я заметил что он посылает события дальше, но как-то очень редко... |
|
|
Текстовая версия | Сейчас: 20.9.2024, 6:37 |