1

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

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

由于我的主类MyApplication是从 派生的QtSingleApplication,我想重写该方法

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

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

4

1 回答 1

2

您可以使用QApplication::activeWindow(),如果您的应用程序不在焦点上,它将返回零指针。

于 2012-12-10T16:14:58.660 回答