crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
wiz29
  опции профиля:
сообщение 16.3.2011, 11:08
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Доброго времени суток, столкнулся со следующей проблемой. имею QMainWindow c встроенной QMdiArea (ну и соответсвенно с QMdisubwindow). Когда открываю меню в MainWindow и провожу мышью над QMdisubwindow (меню при этом остается открытым) не могу никак получить сообщения mouseMove для QMdiSubwindow, хотя Enter и Leave events для QMDisubwindow проходят. Можно ли как то получить сообщения о перемещении мыши в контексте QMdisubwindow в такой ситуации, или же это принципиально не возможно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
freeserchik
  опции профиля:
сообщение 18.3.2011, 17:04
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 15.12.2010
Пользователь №: 2268

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ну почему не возможно то сразу? Всё возможно.
В классе QWidget, который является базовым по отношению к QMdiSubWindow, есть виртуальный метод mouseMoveEvent(QMouseEvent * event), который и нужно переопределить в твоем классе. И ещё один важный момент: в конструкторе класса вызови метод setMouseTracking(true), иначе событие "Перемещение мыши" отлавливаться не будет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 18.3.2011, 17:08
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(freeserchik @ 18.3.2011, 17:04) *
Ну почему не возможно то сразу? Всё возможно.
В классе QWidget, который является базовым по отношению к QMdiSubWindow, есть виртуальный метод mouseMoveEvent(QMouseEvent * event), который и нужно переопределить в твоем классе. И ещё один важный момент: в конструкторе класса вызови метод setMouseTracking(true), иначе событие "Перемещение мыши" отлавливаться не будет.

Когда меню открыто (именно меню для QMainWindow), события не проходят... setMouseTracking(true) установлено для всех виджетов включая предков.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 23.3.2011, 9:38
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


В том виджете в котором хочешь ловить события мышки вызываешь void QWidget::grabMouse ().
Когда в перехвате событий нужда отпадает вызываешь void QWidget::releaseMouse ()

Ну и, как заметил freeserchik, не забудь про mouseMoveEvent(QMouseEvent * event)

Сообщение отредактировал PAFOS - 23.3.2011, 9:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 1.6.2025, 18:09