9

マウス カーソルが特定のウィジェットの上にあるときにポップアップ ウィンドウを表示しています。マウスがウィジェットから離れたときにこのポップアップを非表示にしたいと考えています。

それを行うために、私は再実装しleaveEvent()ました。これは、別のアプリケーションに切り替える場合を除いて、すべての場合に機能するようAlt+Tabです。おそらく別のイベントをキャッチする必要があることがわかりましたが、どういうわけか適切なイベントが見つかりません。1つ提案できますか?

4

1 に答える 1

12

探しているイベントは次QEvent::ApplicationDeactivateのとおりです。「アプリケーションは中断されており、ユーザーは利用できません」。

インスタンスにイベント フィルターをインストールして、QApplicationこのイベントをキャッチできます。QObject::installEventFilter(QObject*)これがどのように機能するかについての詳細は、ドキュメントを参照してください。

Qt 5.2 以降、このQEvent::ApplicationDeactivateイベントは廃止されました。Qt 5.2 (またはそれ以降) でアプリケーションがいつ非アクティブ化されたかを識別する正しい方法は、QGuiApplication::applicationStateChanged(Qt::ApplicationState state)シグナルを使用することです。

于 2013-01-03T21:15:51.460 に答える