如何正确关闭Qt程序?

JBL*_*JBL 8 c++ qt

当我尝试关闭我的Qt程序时,它只是在后台运行,虽然没有窗口了.

基本上,我想知道我应该做什么,所以当我点击主窗口(没有父窗口)上的红叉时它会正常关闭.

通过这个链接,我尝试了一些事情,如:

QApplication app(argc, argv);
//...
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
return app.exec();
Run Code Online (Sandbox Code Playgroud)

要么

QApplication app(argc, argv);
//...
app.setQuitOnLastWindowClosed(true);
return app.exec();
Run Code Online (Sandbox Code Playgroud)

但是没有工作,在点击十字架后,该过程仍然留在内存中.

然后,我怎样才能正确关闭我的程序?

Pav*_*hov 10

您可以使用手动关闭应用程序QApplication::quit().

默认情况下,当Qt::WA_QuitOnClose关闭具有该属性的最后一个顶级窗口时,将终止执行.您不需要连接lastWindowClosed,quit因为它重复默认setQuitOnLastWindowClosed行为.您不需要这样做setQuitOnLastWindowClosed(true),因为默认情况下它是真的.您发布的代码没有任何作用(如果其他地方没有任何改变).

可能的解决方案:

  • 检查主窗口属性.也许你已经删除了Qt::WA_QuitOnClose属性.
  • 如果您已closeEvent在顶级窗口中重新实现,请检查是否接受了关闭事件.
  • 检查是否存在可能隐藏但未关闭的其他顶级窗口小部件.使用QApplication::topLevelWidgets()一一列举.