Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个包含几个 QDockWidgets 的 QMainWindow。每个 DockWidget 都包含其他几个 3rd 方小部件(我无权访问源代码)。其中一些小部件消耗焦点和鼠标事件。我的问题是确定用户何时单击其中一个 DockWidgets。在 DockWidget 上安装 eventFilter 将不起作用,因为 DockWidget 的某些子项会消耗相关事件。有没有办法确定“活动”的 DockWidget?
QWidget使用QApplication::focusWidget(). _
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(); }