【发布时间】:2012-12-10 15:47:03
【问题描述】:
我有一个 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 中验证这种情况?
【问题讨论】: