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

use*_*423 1 qt exit

这是我遇到的代码:

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

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

sho*_*osh 5

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

qApp->setQuitOnLastWindowClosed(false);
Run Code Online (Sandbox Code Playgroud)

文档说:

此属性保存应用程序在最后一个窗口关闭时是否隐式退出.

默认值为true.

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

而你出于某种原因将其设置为false.


art*_*rtm 5

我有一个类似的问题(除了qApp->setQuitOnLastWindowClosed(true);先前的答案建议之外).我怀疑我们使用的其中一个库没有正确清理其线程并且调查正在等待,但最简单的解决方法是替换return a.exec();为:

exit(a.exec());
Run Code Online (Sandbox Code Playgroud)