如何正确关闭Qt程序?

时间:2013-06-12 09:02:03

标签: c++ qt

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

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

Following this link,我尝试过以下几件事:

QApplication app(argc, argv);
//...
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
return app.exec();

QApplication app(argc, argv);
//...
app.setQuitOnLastWindowClosed(true);
return app.exec();

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

那么,我怎样才能正确关闭我的程序?

1 个答案:

答案 0 :(得分:9)

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

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

可能的解决方案:

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