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:

  1. appel exit(EXIT_FAILURE)
  2. appel QApplication::quit()
  3. appel QCoreApplication::quit()

Et différence entre (2) et (3)?

102
demandé sur this.lau_ 2011-11-06 13:15:36

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).

116
répondu Bill 2018-07-05 13:33:14

, 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.

27
répondu this.lau_ 2011-11-06 10:00:30

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é

0
répondu Трипольский Пётр 2017-03-21 16:54:16
//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";

Exemple

0
répondu user3777664 2018-02-12 15:42:49

Si vous utilisez Qt Jambi, cela devrait fonctionner:

QApplication.closeAllWindows();
-1
répondu Durgarao Maruboina 2017-09-22 21:17:06