我想保存焦点窗口的标题,我做了这部分,但我不知道是否有任何 QEvent 可以捕获所有(非应用程序)focusChanged 事件?就像从 Chrome 切换到 Qt Creator 一样。我做了一个替代解决方案,如果最上面的窗口标题发生了变化,那么每秒检查一次,但这太粗鲁了。如果可能,我需要跨平台解决方案。
编辑
我正在使用 QT 5.9.0
快速回答:Qt 只有它自己的窗口和小部件的焦点事件。有关起点,请参阅http://doc.qt.io/qt-5/qfocusevent.html#details 。在其他应用程序中没有焦点事件。
细节: 对于多平台解决方案需要有更一般的观点。在某些(X 窗口)系统上,键盘焦点位于鼠标下的窗口中。但是该窗口仅在单击后才变为最顶层。在移动平台上,只有一个活动应用程序。并且不允许应用程序查看其他应用程序何时被激活。因此,据我了解,没有完整的多平台解决方案。
仅限 Windows 的扩展在 Qt Windows Extras 中。http://doc.qt.io/qt-5/qtwinextras-overview.html。但不幸的是,没有任何焦点变化相关。