【问题标题】:Disable Qt mouse events when application does not have focus当应用程序没有焦点时禁用 Qt 鼠标事件
【发布时间】:2012-12-10 15:47:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: windows qt


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2014-01-17
      相关资源
      最近更新 更多