Что происходит с QThread, когда приложение закрывается без надлежащего вызова wait ()?

В приведенном ниже примере (внутри приложения Qt GUI) запускается новый поток (с циклом событий, в котором я хочу выполнить некоторую работу):

void doWork()
{
   QThread* workerThread = new QThread();

   Worker* worker = new Worker();
   worker->moveToThread(workerThread);

   connect(workerThread, SIGNAL(started()), worker, SLOT(startWork()));
   connect(worker, SIGNAL(finished()), workerThread, SLOT(quit()));

   connect(workerThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
   connect(workerThread, SIGNAL(finished()), workerThread, SLOT(deleteLater()));

   workerThread->start();
}

startWork() может быть длительной операцией, во время которой приложение может быть закрыто.

Я ожидал, что приложение не будет закрыто до тех пор, покаstartWork() выполняется наworkerThread, Кажется, однако, что когда я закрываю последнее окно приложения,workerThread исчезает мгновенно (во время длительной работы) и приложение закрывается без проблем.

Возникли вопросы:

Почему былworkerThread стереть сразу?Это какая-то проблема родителей / детей?Как Qt справляется с такой ситуацией?Это ошибка программиста, чтобы не звонитьwait() на QThread (в конце концов)?Даже если так, я пыталсяwait() внутри слота дляaboutToQuit() и приложение не былоt закрыт после длительной работы (с настройкой, как указано выше). Толькоquit(); wait(); (внутри упомянутого слота) позволило приложению закрыться. Зачем?

Ответы на вопрос(2)

Ваш ответ на вопрос