Qt为什么多个顶层窗口关闭其一可能导致程序结束?

Amelie
  • 82

这是写一个小游戏中出现的问题,游戏有3个顶层窗口,分别为:窗口1、窗口2、窗口3。

同一时间只能有一个窗口显示,我的预计计划是窗口1控制着程序关闭(窗口1关闭程序就关闭)。可问题是窗口2或窗口3单独出现的时候,如果关闭了它们中的一个,整个程序也随之关闭了,请问这是什么原因导致的?

我复现了一下情景:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Widget w1;
    Widget w2;
    Widget w3;

#if 0
    w1.hide();
    w2.hide();
    w3.hide();
    // w2.close() // 这里关闭w2并不会导致程序结束
#else
    w1.hide();
    w2.show(); // 点击叉为什么程序就结束了?明明还有2个窗口没关闭才对啊?
    w3.hide();
#endif

    return a.exec();
}
回复
阅读 443
1 个回答
QApplication::setQuitOnLastWindowClosed

main 函数中执行下面这条语句即可:

a.setQuitOnLastWindowClosed(false);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏