| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Наведении мыши на объекты QMenu верхнего уров |
| Автор: SubaroMows 8.3.2011, 15:55 | ||||
| Доброго времени суток. Есть стандартная программа со стандартным меню, при наведении мыши на элемент Action в меню, в строке состояния отображается подсказка, которая задаётся в рукопашную в поле statusTrip, как показано на рисунке. http://imglink.ru Далее встала задача чтобы подсказки выводились для верхних меню:File, Edit, Help. Пример на рисунке: http://imglink.ru Как ни странно но у них тоже есть поля statusStrip, но они не работают. Стал искать окольные пути через eventFilter и mouseMoveEvent. Первый вариант: ...
Сколько не крутил мышкой возле File, тестовое сообщение так и не выдало. Второй вариант: Предварительно установил setMouseTracking(true);
результат тоже 0. Друзья помогите решить эту задачку, очень надо. |
| Автор: _GRIN_ 18.3.2011, 18:11 | ||||||||
Вообщем тебе надо глядеть имплементацию QMenuBar - куда айтемы добавляются - я тут глянул побыстрому - QMenu не получает ни eventInter(), ни underMouse() у него не работает (хотя курсор на надписи айтема) - судя по всему отображается только QMenuBar и просто использует данные от добавленных айтемов. Т.к. если добавить таймер в наследника QMenu и поглядеть его состояния следующим образом:
то мы увидим, что изначально айтем невидим (хотя мы видим надпись (причём имеет какой-то очень уж большой размер):
кликнув на айтеме мы видим, что он стал видим, но его размер нулевой!!!
убрав выделение (перейдя на другой айтем) мы видим, что убрался только флаг видимости, размер остался нулевым
естественно, что при нулевом размере мы никогда не получим событие eventEnter() и соответственно не отобразим сообщение в статусбаре |