当我尝试关闭我的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();
但是两者都不起作用,关闭程序后它仍然停留在内存中,即使点击了叉子。
那么,我该如何正确地关闭我的程序?
Qt::WA_QuitOnClose
属性,但我会尝试重新实现closeEvent()
方法。在搜索时我没有看到相关内容。 - JBLQApplication::quit()
吗? - JBLqDebug() <<
获取一些关于它们的信息(至少是类名)。同时尝试遍历列表并为每个小部件调用show()
。这将帮助您找出这些小部件是什么。 - Pavel StrakhovQDialog::QDialog()
文档:“对话框始终是顶层小部件,但如果它有父级,则默认位置位于父级正中央。” 我认为QMenu
不会引起问题。可能是因为已经禁用了它们的Qt::WA_QuitOnClose
标志。 - Pavel Strakhov