![]() |
|
![]() ![]() ![]() |
|
OlegIT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
На форме есть виджет к которому «прикреплены» несколько других виджетов. Эти «прикреплённые» виджеты можно перемещать мышкой. При определённых условиях происходит перестройка этих виджетов, hide, show, изменение координат и поэтому фокус ввода мыши теряется. Его можно возобновить только заново щёлкнув мышкой. Ни какими setFocus, при перестройке конфигурации, решить вопрос не получается. Можно ли как-то ещё перенаправить сообщение он мыши в новый виджет, который находится под курсором?
|
|||
|
||||
Avazart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
||||
|
||||
OlegIT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
В приложении простенький код показывающий проблему.
Не получается "протащить" виджет без остановки. Это сообщение отредактировал(а) OlegIT - 21.7.2014, 14:53 Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Не разберу что там у тебя с фокусом, но grabMouse/releaseMouse определенно нужно вызывать. Так хотя бы mouseMoveEvent будет прилетать, когда мышь вылезет за пределы диалога.
|
|||
|
||||
OlegIT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Когда мыш выходит за пределы диалога сообщения всё равно приходят в тот виджет на котором был клик, а когда происхолит hide, show сообщение mouseMoveEvent перестают приходить.
|
|||
|
||||
OlegIT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
grabMouse/releaseMouse не работает. То есть grabMouse срабатывает, окна перемещаются свободно, без остановке, но сообщение mouseReleaseEvent не вызывается и releaseMouse не вызывается. Больше на окне ни чего не работает и кнопка закрыть программу тоже не доступна.
|
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Странно. В твоем примере вызываю grabMouse в mousePressEvent и releaseMouse в mouseReleaseEvent - все хорошо отрабатывает.
|
|||
|
||||
OlegIT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
... Заработало, почему-то. Что было не так, в очередной раз так и не понял:)
А в рабочем коде у меня структура посложней и путанней была, видно путанней не только для меня. Но получается, что сообщение mouseMoveEvent дочерние окна не получают или опять я где-то напутал? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Возможно, нужно было пометить, что событие обработано: event->accept() ;
Когда я этого не делал в обработчке правой кнопки мыши после моего контектного меню вызывалось системное. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |