当我尝试关闭我的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();
但是没有工作,在点击十字架后,该过程仍然留在内存中。
那么,我怎样才能正确关闭我的程序?
答案 0 :(得分:9)
您可以使用QApplication::quit()
手动关闭应用程序。
默认情况下,当关闭具有Qt::WA_QuitOnClose
属性的最后一个顶级窗口时,将终止执行。您不需要将lastWindowClosed
连接到quit
,因为它会重复默认的setQuitOnLastWindowClosed
行为。您不需要执行setQuitOnLastWindowClosed(true)
,因为默认情况下它是真的。您发布的代码没有任何作用(如果其他地方没有任何更改)。
可能的解决方案:
Qt::WA_QuitOnClose
属性。closeEvent
,请检查是否接受了关闭事件。 QApplication::topLevelWidgets()
列出它们。