QThread: уничтожен, пока поток все еще работает в однопоточной программе

int main(int argc, char** argv) 
{
   QApplicaiton app(argc, argv);

   // parsing other arguments of argc,argv

   return app.exec();
}

Моя проблема заключается в следующем: функция может быть возвращена во время анализа других аргументов (без достижения app.exec()), и когда объект QApplication удаляется, я получаю следующее сообщение об ошибке QThread: Destroyed while thread is still running. В качестве возможного решения я пытаюсь создать QApplication после завершения синтаксического анализа аргументов.

Я пробовал app.thread()->quit(); перед оператором возврата, но это не помогает.

Когда создается объект QApplication, он удаляет определенные аргументы (стиль и т. д.) из argc, argv.

Можно ли получить их из argc, argv вручную, не создавая объект QApplication?

Странно, что в однопоточной программе я получаю ошибку QThread: Destroyed while thread is still running.

Лучшее "решение", которое я нашел до сих пор, - это динамически создавать QApplication, а не удалять его. Утечка памяти не является проблемой, потому что она происходит непосредственно перед выходом из программы.


person Ashot    schedule 05.09.2016    source источник
comment
Предоставите ли вы MCVE?   -  person Leon    schedule 05.09.2016
comment
Извините, но я не могу. На MCVE сообщение об ошибке исчезает. Проблема связана с нашей системой сборки и одной конкретной платформой. Возможно, подключена неправильная библиотека. Мне просто нужно обходное решение, чтобы подавить неправильное сообщение об ошибке.   -  person Ashot    schedule 05.09.2016
comment
@Ashot Некоторые классы Qt создают потоки за кулисами (например, QFileSystemWatcher и некоторые сетевые классы), поэтому ваше приложение может не обязательно быть однопоточным.   -  person RA.    schedule 06.09.2016
comment
Этот ответ может представлять здесь интерес.   -  person TheDarkKnight    schedule 06.09.2016