マウス カーソルが特定のウィジェットの上にあるときにポップアップ ウィンドウを表示しています。マウスがウィジェットから離れたときにこのポップアップを非表示にしたいと考えています。
それを行うために、私は再実装しleaveEvent()
ました。これは、別のアプリケーションに切り替える場合を除いて、すべての場合に機能するようAlt+Tab
です。おそらく別のイベントをキャッチする必要があることがわかりましたが、どういうわけか適切なイベントが見つかりません。1つ提案できますか?
探しているイベントは次QEvent::ApplicationDeactivate
のとおりです。「アプリケーションは中断されており、ユーザーは利用できません」。
インスタンスにイベント フィルターをインストールして、QApplication
このイベントをキャッチできます。QObject::installEventFilter(QObject*)
これがどのように機能するかについての詳細は、ドキュメントを参照してください。
Qt 5.2 以降、このQEvent::ApplicationDeactivate
イベントは廃止されました。Qt 5.2 (またはそれ以降) でアプリケーションがいつ非アクティブ化されたかを識別する正しい方法は、QGuiApplication::applicationStateChanged(Qt::ApplicationState state)
シグナルを使用することです。