Правильный способ выхода из программы Qt? - PullRequest
112 голосов
/ 06 ноября 2011

Как мне выйти из программы Qt, например, при загрузке файла данных и обнаружении повреждения файла, и пользователю необходимо выйти из этого приложения или повторно запустить файл данных?

Должен ли я:

  1. Звоните exit(EXIT_FAILURE)
  2. вызов QApplication::quit()
  3. вызов QCoreApplication::quit()

А разница между (2) и (3)?

Ответы [ 5 ]

127 голосов
/ 06 ноября 2011

QApplication является производным от QCoreApplication и, таким образом, наследует quit(), который является открытым слотом QCoreApplication, поэтому нет никакой разницы между QApplication::quit() и QCoreApplication::quit().

. Как мы можем прочитать вдокументация QCoreApplication::quit() it "указывает приложению завершиться с кодом возврата 0 (успех)." .Если вы хотите выйти из-за того, что обнаружили повреждение файла, вы можете не захотеть выходить с нулевым кодом возврата, что означает успех, поэтому вы должны вызвать QCoreApplication::exit(), потому что вы можете указать ненулевой код возврата, который путемсоглашение указывает на ошибку.

Важно отметить, что "если цикл обработки событий не выполняется, эта функция (QCoreApplication :: exit ()) ничего не делает" , поэтомуЕсли вам нужно позвонить exit(EXIT_FAILURE).

28 голосов
/ 06 ноября 2011

Вы можете позвонить qApp.exit();.Я всегда использую это и никогда не сталкивался с проблемой.

Если ваше приложение является приложением командной строки, вы, возможно, захотите вернуть код завершения.Код полностью зависит от вас.

0 голосов
/ 06 января 2018
//How to Run App

bool ok = QProcess::startDetached("C:\\TTEC\\CozxyLogger\\CozxyLogger.exe");
qDebug() <<  "Run = " << ok;


//How to Kill App

system("taskkill /im CozxyLogger.exe /f");
qDebug() << "Close";

пример

0 голосов
/ 05 апреля 2017

Если вы используете Qt Jambi, это должно работать:

QApplication.closeAllWindows();
0 голосов
/ 21 марта 2017

если вам нужно закрыть приложение из main (), вы можете использовать этот код

int main(int argc, char *argv[]){
QApplication app(argc, argv);
...
if(!QSslSocket::supportsSsl()) return app.exit(0);
...
return app.exec();
}

Программа будет остановлена, если OpenSSL не установлен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...