Вызов QCoreApplication::quit()
аналогичен вызову QCoreApplication::exit(0)
. Там написано
После того, как эта функция была вызвана, приложение покидает главный цикл обработки событий и возвращается из вызова exec ().
Поскольку цикл событий оставлен, я думаю, все ожидающие события отменяются.
Редактировать: Я сделал небольшой тестовый пример, чтобы показать, что ожидающие события действительно отменены:
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>
class MyObject : public QObject
{
Q_OBJECT
public Q_SLOTS:
void start()
{
QCoreApplication::postEvent(this, new QEvent(QEvent::User));
QCoreApplication::quit();
}
protected:
void customEvent(QEvent* event)
{
qDebug() << "Event!";
}
};
int main(int argc, char* argv[])
{
QCoreApplication app(argc, argv);
MyObject o;
QTimer::singleShot(0, &o, SLOT(start()));
return app.exec();
}
#include "main.moc"
В этом случае событие, опубликованное в MyObject::start()
, никогда не наступит. Это будет, конечно, если убрать звонок на QCoreApplication::quit()
.