我的Qt5应用程序如何以编程方式了解正在运行的窗口和对话框?

时间:2016-09-20 15:26:56

标签: c++ dialog widget window qt5

我需要以编程方式了解哪些窗口/对话框/窗口小部件是打开的,因为我正在使用FileOpenEvent来加载文件,而我只想加载文件,如果QMainWindow是唯一的事情开放。

1 个答案:

答案 0 :(得分:0)

我发现迭代所有QWindow并检查多个isExposed() == true处理我正在做的所有事情,除了原生Mac对话框(另存为,打印和打开文件)。所以这似乎足以满足我的需求:

  bool found_exposed_window = false;
  foreach (QWindow *window, qApp->allWindows()) {
    if (window->isExposed()) {
      if (found_exposed_window) {
        // This is the second exposed window, meaning the user has something
        //  open in addition to the main form.
        // So, don't try to load a file.
        return;
      }

      found_exposed_window = true;
    }
  }