当我尝试关闭我的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()一一列举.