setQuitOnLastWindowClosed(true):是 widget.hide() == widget.close()?

setQuitOnLastWindowClosed(true): Is widget.hide() == widget.close()?

当运行以下代码时:

int main(int argc, char **argv) {
  QApplication application{argc, argv};
  application.setQuitOnLastWindowClosed(true);

  QLabel a("a");
  a.setMinimumWidth(400);
  a.show();

  QLabel b("b");
  b.setMinimumWidth(400);
  b.show();

  QTimer::singleShot(10000, [&]() { b.hide(); });

  return application.exec();
}

发生以下情况:

当我现在手动关闭 window "a" 时,Qt 事件循环退出,即使还有一个未关闭的 window "b" (这是隐藏的)。

为什么? Qt不应该等到"b"关闭,不仅隐藏吗?

编辑: 来自 lastWindowClosed 事件的文档:

This signal is emitted from QApplication::exec() when the last visible primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose attribute set is closed.