如何在QQMainWindow中获取活动的QDockWidget

时间:2013-10-22 06:55:03

标签: qt qt4

我有一个包含几个QDockWidgets的QMainWindow。每个DockWidget都包含其他几个第三方窗口小部件(我无权访问源代码)。其中一些小部件消耗焦点和鼠标事件。 我的问题是确定用户何时点击其中一个DockWidgets。在DockWidget上安装eventFilter将不起作用,因为一些DockWidget的子节点使用相关事件。 有没有办法确定“活动”DockWidget?

1 个答案:

答案 0 :(得分: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();
}