Название: Меню не закрывается при переключении в другое приложение Отправлено: 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() у меню, так делают сами тролли.
|