Ungraceful / kill приложение Qt, когда цикл событий не запущен

Как я могу завершить работающее приложение Qt (QCoreApplication), когда exit не работает, потому что цикл обработки событий еще не запущен.

http://doc.qt.io/qt-5/qcoreapplication.html#exit

После вызова этой функции приложение выходит из основного цикла обработки событий и возвращается из вызова exec(). Функция exec() возвращает returnCode. Если цикл обработки событий не запущен, эта функция ничего не делает.

Один (глупый?) подход, который я нашел, состоит в том, чтобы запустить цикл событий и вызвать QCoreApplication::exit again , но это мой лучший вариант?


person Horst Walter    schedule 22.02.2016    source источник
comment
ты действительно должен убить его так рано? может подождать?   -  person user3528438    schedule 22.02.2016
comment
Это действительно редкое, надеюсь, никогда не существовавшее заболевание. Я отвечаю на серьезную ошибку во время запуска приложения и, скорее всего, будет обработан exit()Но что мне указать в строке после выхода, если она когда-либо будет передана?   -  person Horst Walter    schedule 22.02.2016


Ответы (1)


Если я правильно понимаю ваш вопрос, вы еще не вызвали QApplication::exec(), поэтому ваш цикл событий не запущен.

Если вы еще не вызвали exec() для запуска цикла событий, почему бы просто не вызвать функцию stdlib exit() или проверить состояние ошибки перед вызовом exec()

Например. в main.cpp

if(!somethingWentReallyWrong) {
    a.exec(); // Where a is your QApplication or QCoreApplication instance
} else {
    return myErrorCode;
}
person Jarra McIntyre    schedule 22.02.2016
comment
Попробую stdlib exec(). Возможный подход. Я не могу завершиться в основном, если нужно завершить какую-то функцию (по каким-то особым причинам). - person Horst Walter; 22.02.2016
comment
@HorstWalter Попробует stdlib exec () => вы имеете в виду exit ()? Кстати, какие у вас особые причины? - person Ilya; 22.02.2016
comment
sts::exitимеется в виду. Вариант использования — это собственный класс приложения (специализированный QApplication), из которого в редких случаях мне нужно выйти до запуска цикла обработки событий. - person Horst Walter; 22.02.2016
comment
@HorstWalter, если вы довольны ответом, примите его :) - person Jarra McIntyre; 23.02.2016