0

我有一个包含几个 QDockWidgets 的 QMainWindow。每个 DockWidget 都包含其他几个 3rd 方小部件(我无权访问源代码)。其中一些小部件消耗焦点和鼠标事件。我的问题是确定用户何时单击其中一个 DockWidgets。在 DockWidget 上安装 eventFilter 将不起作用,因为 DockWidget 的某些子项会消耗相关事件。有没有办法确定“活动”的 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 回答