Правильный способ выйти из программы Qt?



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



Я:




  1. вызов exit(EXIT_FAILURE)

  2. вызов QApplication::quit()

  3. вызов QCoreApplication::quit()


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

1803   5  

5 ответов:

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

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

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

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

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

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

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

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

//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";

пример

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

QApplication.closeAllWindows();

Comments

    Ничего не найдено.