![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Есть класс наследник QWidget. При наведении на него выскакивает кастомный тултип.
Так вот, этот тултип должен исчезать при потери фокуса приложением. Но, передавать сигнал аж из MainWindow до этого класса слишком накладно (3-и уровня "вложенности"). А есть принудительно ставить фокус на этот виджет и отлавливать QFocusOutEvent, то тогда фокус/тултип пропадает при любых действия с прогой (клик мышкой, вращение колесика, Tab). То есть нужно отловить потерю фокуса всем приложением и передать этот "сигнал" в нужный виджет. Как то так... |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
что-нибудь вроде проверки по таймеру или в onidle - активно ли приложение ? Если активно - показать виджет (если скрыт). Если неактивно - скрыть
|
|
|
ufna |
![]()
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
.. Но, передавать сигнал аж из MainWindow до этого класса слишком накладно (3-и уровня "вложенности"). .. Самый простой вариант - пусть в MainWindow будет "массив тултипов", при открытии закидывай туда указатель на этот тултип. При потере фокуса приложением - говори ему "сезам, закройся". |
|
|
BRE |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
То есть нужно отловить потерю фокуса всем приложением и передать этот "сигнал" в нужный виджет. Как то так... Так а почему не посмотреть как сделан QToolTip? Установи eventFilter на объект QApplication, отлавливай нужные события и "туши" свой тултип. Это все можно делать прямо у себя в тултипе. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 6.6.2025, 9:13 |