• 1143阅读
  • 2回复

[提问]Qt为什么多个顶层窗口关闭其一可能导致程序结束? [复制链接]

上一主题 下一主题
离线amelie
 

只看楼主 倒序阅读 楼主  发表于: 2021-10-24
这是写一个小游戏中出现的问题,游戏有3个顶层窗口,分别为:窗口1、窗口2、窗口3。


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


我复现了一下情景:


  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     Widget w1;
  5.     Widget w2;
  6.     Widget w3;
  7. #if 0
  8.     w1.hide();
  9.     w2.hide();
  10.     w3.hide();
  11.     // w2.close() // 这里关闭w2并不会导致程序结束
  12. #else
  13.     w1.hide();
  14.     w2.show(); // 点击叉为什么程序就结束了?明明还有2个窗口没关闭才对啊?
  15.     w3.hide();
  16. #endif
  17.     return a.exec();
  18. }


1条评分金钱+1
om181225 金钱 +1 - 2021-11-05
离线maxlogo

只看该作者 1楼 发表于: 2021-10-24
setQuitOnLastWindowClosed
个人博客:
简书:https://www.jianshu.com/u/14fa805306bd
CSDN:https://blog.csdn.net/qq10097355
思否:https://segmentfault.com/u/lowbees/articles
离线amelie

只看该作者 2楼 发表于: 2021-10-24
回 maxlogo 的帖子
maxlogo:setQuitOnLastWindowClosed (2021-10-24 20:09) 

谢谢,困扰我多天的问题解决了
Qt 的默认策略是显示的最后一个窗口关闭,整个程序就关闭吗?
1条评分金钱+10
20091001753 金钱 +10 GuiApplication 默认是,但你也可以改 false 2021-10-25
快速回复
限100 字节
 
上一个 下一个