![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
wiz29 |
![]()
Сообщение
#1
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток, столкнулся со следующей проблемой. имею QMainWindow c встроенной QMdiArea (ну и соответсвенно с QMdisubwindow). Когда открываю меню в MainWindow и провожу мышью над QMdisubwindow (меню при этом остается открытым) не могу никак получить сообщения mouseMove для QMdiSubwindow, хотя Enter и Leave events для QMDisubwindow проходят. Можно ли как то получить сообщения о перемещении мыши в контексте QMdisubwindow в такой ситуации, или же это принципиально не возможно?
|
|
|
freeserchik |
![]()
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 15.12.2010 Пользователь №: 2268 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ну почему не возможно то сразу? Всё возможно.
В классе QWidget, который является базовым по отношению к QMdiSubWindow, есть виртуальный метод mouseMoveEvent(QMouseEvent * event), который и нужно переопределить в твоем классе. И ещё один важный момент: в конструкторе класса вызови метод setMouseTracking(true), иначе событие "Перемещение мыши" отлавливаться не будет. |
|
|
wiz29 |
![]()
Сообщение
#3
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Ну почему не возможно то сразу? Всё возможно. В классе QWidget, который является базовым по отношению к QMdiSubWindow, есть виртуальный метод mouseMoveEvent(QMouseEvent * event), который и нужно переопределить в твоем классе. И ещё один важный момент: в конструкторе класса вызови метод setMouseTracking(true), иначе событие "Перемещение мыши" отлавливаться не будет. Когда меню открыто (именно меню для QMainWindow), события не проходят... setMouseTracking(true) установлено для всех виджетов включая предков. |
|
|
PAFOS |
![]()
Сообщение
#4
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
В том виджете в котором хочешь ловить события мышки вызываешь void QWidget::grabMouse ().
Когда в перехвате событий нужда отпадает вызываешь void QWidget::releaseMouse () Ну и, как заметил freeserchik, не забудь про mouseMoveEvent(QMouseEvent * event) Сообщение отредактировал PAFOS - 23.3.2011, 9:39 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 1.6.2025, 18:09 |