Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lion от Июнь 21, 2010, 14:50



Название: Меню не закрывается при переключении в другое приложение
Отправлено: Lion от Июнь 21, 2010, 14:50
В некоторых случаях открытое меню не закрывается при переключении в другое приложение. Демонстрация такого случае во вложении, это немного измененный пример из Qt - systray. По одинарному клику левой кнопкой по иконке в трее создаётся и отображается меню, если кликнуть на форму приложения systray, то оно пропадёт, но если кликнуть по панели задач или в другом приложении, тогда оно остаётся и при повторном клике создаётся новое. При этом контекстное меню, вызываемое по по правому клику прячется в обоих случаях. Замечено, что если перед отображением меню вызвать функцию activateWindow(), то меню начинает работать нормально, но появляются заметные задержки (примерно 5 сек) между кликом и появлением меню.

Как заставить меню вызываемое левым кликом работать аналогично контекстному (вызов функции activateWindow() не подходит т.к. нет виджета)?

Система WinXP SP3 Qt4.5.3. На Qt 4.6.3 и Win7 ситуация аналогичная.


Название: Re: Меню не закрывается при переключении в другое приложение
Отправлено: _KoT_ от Июнь 21, 2010, 15:26
Как варианты:
1
Переопределить в наследнике меню метод virtual void focusOutEvent ( QFocusEvent * event ), чтоб при потере фокуса меню уничтожалось. При создании объекта передавать ему фокус.
В результате меню будет закрываться при потере фокуса.
2
При создании объекта меню проверять, нет ли уже таково же и не создовать новый или уничтожать старый.
В результате не будет создаваться два одинаковых меню.
Это не в точности, что ты хочешь, но тоже решение проблемы. Иногда удобно, что меню не закрывается)


Название: Re: Меню не закрывается при переключении в другое приложение
Отправлено: Wicked_Digger от Июнь 21, 2010, 16:09
Запостить баг в Qt, проблема известная, я с ней сталкивался.
Выход - делать свое меню, а не использовать штатное.
У меня список багов для отправки в Qt большой, до этого нескоро руки дойдут :(


Название: Re: Меню не закрывается при переключении в другое приложение
Отправлено: Lion от Июнь 21, 2010, 19:03
Но ведь есть меню, которые работают как надо, например, в том же примере контекстное меню, да и у меня есть много других, которые отлично работают, нужно разобраться в чём отличие.


Название: Re: Меню не закрывается при переключении в другое приложение
Отправлено: Lion от Июнь 21, 2010, 20:41
Решение найдено, нужно вызывать activateWindow() у меню, так делают сами тролли.