我有一个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中验证这种情况?
答案 0 :(得分:2)
您可以使用QApplication::activeWindow()
,如果您的应用程序未处于焦点位置,它将返回零指针。