如何检测我的应用程序在Qt中失去焦点

How to detect that my application lost focus in Qt?

本文关键字:Qt 失去 焦点 应用程序 我的 何检测 检测      更新时间:2023-10-16

当鼠标光标在某个小部件上时,我要显示一个弹出窗口,当鼠标离开小部件时,我想隐藏这个弹出窗口。

为此,我重新实现了leaveEvent()。除了通过Alt+Tab切换到另一个应用程序外,这似乎在所有情况下都有效。我想我可能需要赶上另一个活动,但不知怎么的,我找不到合适的。你能建议一个吗?

您要查找的事件是QEvent::ApplicationDeactivate: "应用程序已被挂起,用户无法使用".

您可以在QApplication实例上安装一个事件过滤器来捕获此事件。请参阅QObject::installEventFilter(QObject*)的文档了解更多工作原理。

自Qt 5.2 QEvent::ApplicationDeactivate事件被弃用。在Qt 5.2(或更高版本)中识别应用程序何时停用的正确方法是使用QGuiApplication::applicationStateChanged(Qt::ApplicationState state)信号。