1

QEvent::HoverEnter特定のコンポーネントが、QEvent::HoverLeaveQEvent::HoverMoveQEvent::MouseMoveイベントに反応する Qt (4.7) Windows 7 アプリケーションがあります。メイン アプリケーション ウィンドウが表示されているがフォーカスがない場合、これらのイベントを無視したいと考えています。

たとえば、メイン アプリケーション ウィンドウと Web ブラウザ ウィンドウの 2 つのウィンドウが並んでいるとします。ブラウザ ウィンドウをマウスの左ボタンでクリックすると、ブラウザにフォーカスがあります。メイン アプリケーション ウィンドウをクリックせずにマウス ポインタを移動しても、アプリケーションが反応しないようにします。現在の動作は、アプリケーションがマウス イベントを受け取り、それに反応する (メニューを開くなど) というものです。

私のメインクラスMyApplicationはから派生しているのでQtSingleApplication、メソッドをオーバーライドしたい

virtual bool MyApplication::notify(QObject* receiver, QEvent* event)

アプリケーションにフォーカスのあるウィンドウがない場合に特定のイベントを無視できるように、テストを追加します。Qtでこの状態を確認する方法はありますか?

4

1 に答える 1

2

を使用できますQApplication::activeWindow()。アプリケーションがフォーカスされていない場合、ゼロポインターが返されます。

于 2012-12-10T16:14:58.660 に答える