Comment quitter un programme Qt?

129

Comment dois-je quitter un programme Qt, par exemple lors du chargement d'un fichier de données et de la découverte d'une corruption de fichier, et l'utilisateur doit-il 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 la différence entre (2) et (3)?

Marguerite
la source

Réponses:

146

QApplication est dérivé de QCoreApplication et hérite ainsi de quit()qui est un slot public de QCoreApplication, il n'y a donc aucune différence entre QApplication::quit()et QCoreApplication::quit().

Comme nous pouvons le lire dans la documentation de QCoreApplication::quit()celui - ci, "indique à l'application de quitter avec le code retour 0 (succès)". . Si vous souhaitez quitter parce que vous avez découvert une corruption de fichier, vous ne voudrez peut-être pas quitter avec le code de retour zéro, ce qui signifie une réussite, vous devez donc appelerQCoreApplication::exit() car vous pouvez fournir un returnCode différent de zéro qui, par convention, indique une erreur.

Il est important de noter que "si la boucle d'événements 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).

Facture
la source
30

Vous pouvez appeler qApp.exit();. J'utilise toujours ça 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 vouloir renvoyer un code de sortie. C'est à vous de décider quel est le code.

Laurent
la source
3
J'avais besoin de faire ce qui suit:qApp->exit();
Frederick Ollinger
0

Si vous utilisez Qt Jambi, cela devrait fonctionner:

QApplication.closeAllWindows();
Durgarao Maruboina
la source
-2

si vous devez fermer votre application depuis 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 se terminera si OpenSSL n'est pas installé

Petr Tripolsky
la source
1
Je pense que cela ne compile pas. app.exit (0) ne renvoie pas un entier. Utilisez if(!QSslSocket::supportsSsl()) {return 0;};. Parce que app.exec () n'a pas été appelé à cette ligne, app.exit (0) ne fait rien, voir la documentation de QCoreApplication :: exit (): Si la boucle d'événements n'est pas en cours d'exécution, cette fonction ne fait rien.
Sacha Guyer
-5
//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

utilisateur3777664
la source
la question n'est pas de détacher de nouveaux processus
codeur débutant