Bonne façon de quitter un programme Qt?
Comment dois-je quitter un programme Qt, par exemple lors du chargement d'un fichier de données, et découvert la corruption de fichiers, et l'utilisateur doit quitter cette application ou relancer le fichier de données?
Devrais-Je:
- appel
exit(EXIT_FAILURE)
- appel
QApplication::quit()
- appel
QCoreApplication::quit()
Et différence entre (2) et (3)?
5 réponses
QApplication est dérivé de QCoreApplication et hérite ainsi de quit()
qui est un emplacement public de QCoreApplication
, donc il n'y a pas de différence entre QApplication::quit()
et QCoreApplication::quit()
.
Comme nous pouvons le lire dans la documentation de QCoreApplication::quit()
it " indique à l'application de quitter avec le code de retour 0 (succès).". Si vous voulez quitter parce que vous avez découvert la corruption de fichiers, vous ne voudrez peut - être pas quitter avec le code de retour zéro, ce qui signifie succès, vous devez donc appeler QCoreApplication::exit()
parce que vous pouvez fournissez un code de retour différent de zéro qui, par convention, indique une erreur.
, Il est important de noter que "si la boucle d'événement n'est pas en cours d'exécution, cette fonction (QCoreApplication::exit()) ne fait rien", donc dans ce cas, vous devez appeler exit(EXIT_FAILURE)
.
, Vous pouvez appeler qApp.exit();
. Je l'utilise toujours et je n'ai jamais eu de problème avec ça.
Si votre application est une application en ligne de commande, vous pouvez en effet renvoyer un code de sortie. C'est complètement à vous de savoir quel est le code.
Si vous devez fermer votre application à partir de main (), vous pouvez utiliser ce code
int main(int argc, char *argv[]){
QApplication app(argc, argv);
...
if(!QSslSocket::supportsSsl()) return app.exit(0);
...
return app.exec();
}
Le programme sera terminé si OpenSSL n'est pas installé
//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";
Si vous utilisez Qt Jambi, cela devrait fonctionner:
QApplication.closeAllWindows();