Why does calling quit() before exec() not quit the application?

qt

Solution

Calling `QCoreApplication::quit()` is the same as calling `QCoreApplication::exit(0)`.

If you look at the docs of the latter function:

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.

In you example, the event loop has not been started yet when `MainWindow`s constructor is called, hence the call to `quit()` does nothing.

Problem

Why does this program run normally and display the main window? I would expect it to exit since `quit()` is called in the constructor. 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!"); } ```

Original source

Related problems