qt – 为什么在exec()之前调用quit()不退出应用程序?

为什么这个程序正常运行并显示主窗口?我希望它退出,因为在构造函数中调用quit().

Main.cpp的:

#include<QApplication>
#include"MainWindow.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    MainWindow mainWindow;
    mainWindow.show();
    return app.exec();
}

MainWindow.cpp:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
   qApp->quit();
}

void MainWindow::closeEvent(QCloseEvent *)
{
    qDebug("Hello world!");
}
最佳答案
调用QCoreApplication :: quit()与调用QCoreApplication :: exit(0)相同.

如果你看一下docs的后一个功能:

After this function has been called, the application leaves the main
event loop and returns from the call to exec(). The exec() function
returns returnCode. If the event loop is not running, this function
does nothing
.

在您的示例中,当调用MainWindows构造函数时,事件循环尚未启动,因此对quit()的调用不执行任何操作.

转载注明原文:qt – 为什么在exec()之前调用quit()不退出应用程序? - 代码日志