当应用程序没有焦点时,禁用Qt鼠标事件

时间:2012-12-10 15:47:03

标签: windows qt

我有一个Qt(4.7)Windows 7应用程序,其中某些组件对QEvent::HoverEnterQEvent::HoverLeaveQEvent::HoverMoveQEvent::MouseMove事件作出反应。当显示主应用程序窗口但没有焦点时,我想忽略这些事件。

例如,假设我有两个并排的窗口:我的主应用程序窗口和Web浏览器窗口。如果我在浏览器窗口中单击鼠标左键,则浏览器具有焦点。如果我现在将鼠标指针移动到我的主应用程序窗口而不点击它,我不希望应用程序做出反应。当前的行为是我的应用程序接收鼠标事件并对它们作出反应(打开菜单等)。

由于我的主要课程MyApplication来自QtSingleApplication,我想覆盖方法

virtual bool MyApplication::notify(QObject* receiver, QEvent* event)

并添加一个测试,以便在我的应用程序没有任何焦点窗口时可以忽略特定事件。有没有办法在Qt中验证这种情况?

1 个答案:

答案 0 :(得分:2)

您可以使用QApplication::activeWindow(),如果您的应用程序未处于焦点位置,它将返回零指针。