【问题标题】:QApplication::activeWindow always returns '0' on MacQApplication::activeWindow 在 Mac 上总是返回 '0'
【发布时间】:2012-02-14 12:19:26
【问题描述】:

我有一个应用程序,我在其上显示配置面板 (QFrame) 来设置配置。现在我想实现一个功能,如果用户单击我的应用程序上的任何其他位置,我关闭配置面板,但如果用户单击应用程序外部的任何位置,它不应该关闭应用程序。

目前我有以下代码在 Win 7 上运行良好,但在 Mac 上出现问题。

  void ConfigurationPanel::changeEvent ( QEvent * event) 
  {
  if(event->type() == QEvent::ActivationChange)
  {
      if(!isActiveWindow())
      {
          if(QApplication::activeWindow())
          {
              close();
          }
      }
  }
}

在 windows QApplication::activeWindows() 如果我们单击应用程序上的任何位置(但在配置面板之外)返回非零值,如果我单击任何其他预期的应用程序则返回零值。但在 Mac 上,无论我点击哪里,我总是从 QApplication::activeWindow() 获得零值。

谁能告诉我如何解决这个问题?

谢谢

【问题讨论】:

    标签: qt


    【解决方案1】:

    我找到了问题的解决方案。 这仅适用于 Mac,因为它在 Windows 上运行良好。

    在 changeEvent() 处理程序中,我发布了一个我在 ConfigPanel 本身中处理的自定义事件。在 customEvent() 处理程序中,当我执行 QApplication::activeWindow() 时,我会根据单击的应用程序获得适当的值。

    出于某种原因,在 Mac 上的 changeEvent 处理程序中,我们总是将“0”作为活动窗口。

    希望这对其他人有帮助!

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 2013-06-05
      • 1970-01-01
      • 2023-02-16
      • 2014-10-01
      • 1970-01-01
      • 2015-09-27
      • 2014-03-20
      • 2013-04-13
      相关资源
      最近更新 更多