10

当我尝试关闭我的 Qt 程序时,它只是继续在后台运行,尽管不再有窗口。

基本上,我想知道我应该做什么,以便在我单击主窗口(没有父窗口)上的红十字时正确关闭。

按照这个链接,我尝试了一些类似的东西:

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();

但两者都不起作用,单击十字后,该过程仍保留在内存中。

那么,如何正确关闭我的程序?

4

1 回答 1

12

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

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

可能的解决方案:

  • 检查您的主窗口属性。也许你已经删除了Qt::WA_QuitOnClose属性。
  • 如果您已closeEvent在顶级窗口中重新实现,请检查是否已接受关闭事件。
  • 检查是否还有其他一些可能隐藏但未关闭的顶级小部件。用于QApplication::topLevelWidgets()列出它们。
于 2013-06-12T09:09:33.450 回答