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

前端 未结 2 1165
旧时难觅i
旧时难觅i 2020-11-30 11:55

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:

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-30 12:14

    Since QCoreApplication::quit() is a no-op until the event loop has been started, you need to defer the call until it starts. Thus, queue a deferred method call to quit().

    The following lines are functionally identical, either one will work:

    QTimer::singleShot(0, qApp, &QCoreApplication::quit);
    //or
    QTimer::singleShot(0, qApp, SLOT(quit()));
    // or - see https://stackoverflow.com/a/21653558/1329652
    postToThread([]{ QCoreApplication::quit(); });
    // or
    QMetaObject::invokeMethod(qApp, "quit", Qt::QueuedConnection);
    

提交回复
热议问题