Я отображаю всплывающее окно, когда курсор мыши находится над определенным виджетом, и я хотел бы скрыть это всплывающее окно, когда мышь покидает виджет.
Для этого я переопределил leaveEvent()
, Кажется, это работает во всех случаях, за исключением случаев переключения на другое приложение Alt+Tab
, Я понял, что мне, вероятно, нужно поймать другое событие, но почему-то я не могу найти подходящее. Можете ли вы предложить один?
Событие, которое вы ищете QEvent::ApplicationDeactivate
: «Приложение приостановлено и недоступно для пользователя».
Вы можете установить фильтр событий на свой QApplication
экземпляр, чтобы поймать это событие. Смотрите документацию для QObject::installEventFilter(QObject*)
для более подробной информации, как это работает.
Начиная с Qt 5.2 QEvent::ApplicationDeactivate
событие устарело. Правильный способ определить, когда приложение деактивировано в Qt 5.2 (или позже), — это использовать QGuiApplication::applicationStateChanged(Qt::ApplicationState state)
сигнал.
Других решений пока нет …