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