Qt应用程序没有退出,留在内存中

时间:2010-07-12 11:17:28

标签: qt exit

以下是我遇到问题的代码:

QApplication a(argc, argv);
QString path = qApp->applicationDirPath();
qApp->setQuitOnLastWindowClosed(false);
a.addLibraryPath(path+"/plugins");
TryQt w;
w.show();
return  a.exec();

这就是我启动应用程序的方式。在应用程序(TryQt)中,我创建了其他几个QWidgetsQwindows。关闭应用程序时出现问题QMainWindow消失,看起来程序退出,但它仍保留在内存中。 (我可以从任务管理器/进程中看到)。 我也在我的TryQt程序中捕获closeEvent并关闭我在那里打开的所有可能的东西。但仍然没有用。有没有人知道为什么会这样?

2 个答案:

答案 0 :(得分:5)

好吧,这是因为你正在打电话

qApp->setQuitOnLastWindowClosed(false);
文件说:

  

该属性是否持有   应用程序隐式退出时   最后一个窗口关闭。

     

默认值为true。

     

如果此属性为true,则为   应用程序在最后一次退出   可见主窗口(即窗口   没有父母)与   Qt :: WA_QuitOnClose属性集是   关闭。默认情况下,此属性为   设置为除了之外的所有小部件   子窗口。请参阅Qt :: WindowType   有关Qt :: Window的详细列表   对象。

您出于某种原因将其设置为false。

答案 1 :(得分:5)

我遇到了类似的问题(除了前面的答案所示,调用qApp->setQuitOnLastWindowClosed(true);除外)。我怀疑我们使用的其中一个库没有正确清理其线程,并且调查尚未完成,但最简单的解决方法是将return a.exec();替换为:

exit(a.exec());