以下是我遇到问题的代码:
QApplication a(argc, argv);
QString path = qApp->applicationDirPath();
qApp->setQuitOnLastWindowClosed(false);
a.addLibraryPath(path+"/plugins");
TryQt w;
w.show();
return a.exec();
这就是我启动应用程序的方式。在应用程序(TryQt)中,我创建了其他几个QWidgets
和Qwindows
。关闭应用程序时出现问题QMainWindow
消失,看起来程序退出,但它仍保留在内存中。 (我可以从任务管理器/进程中看到)。
我也在我的TryQt程序中捕获closeEvent并关闭我在那里打开的所有可能的东西。但仍然没有用。有没有人知道为什么会这样?
答案 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());