0

いくつかの QDockWidgets を含む QMainWindow があります。各 DockWidget には、他のいくつかのサードパーティのウィジェットが含まれています (ソースにアクセスできません)。これらのウィジェットの一部は、フォーカス イベントとマウス イベントを消費します。私の問題は、ユーザーが DockWidgets のいずれかをクリックしたときを判断することです。DockWidget の子の一部が関連するイベントを消費するため、DockWidget に eventFilter をインストールしても機能しません。「アクティブな」DockWidget を判別する方法はありますか?

4

1 に答える 1

1

QWidgetを使用してフォーカスのある を取得しQApplication::focusWidget()ます。

次のようなものを使用できます。

QWidget* wid = QApplication::focusWidget();
QDockWidget* dock = 0;
while (dock != mainWindow && wid != 0)
{
    dock = qobject_cast<QDockWidget*>(wid);
    if (dock)
        break; // its a QDockWidget
    wid = wid->parent();
}
于 2013-10-22T07:27:24.070 に答える