guia - ¿Forma correcta de salir de un programa Qt?
qgis manual (5)
Puede llamar a qApp.exit();
. Siempre uso eso y nunca tuve un problema con eso.
Si su aplicación es una aplicación de línea de comando, es posible que desee devolver un código de salida. Depende completamente de ti lo que es el código.
¿Cómo debo salir de un programa de Qt, por ejemplo, al cargar un archivo de datos y descubrir la corrupción del archivo, y el usuario debe salir de esta aplicación o volver a iniciar el archivo de datos?
Debería:
-
exit(EXIT_FAILURE)
llamadaexit(EXIT_FAILURE)
- llame a
QApplication::quit()
- llama a
QCoreApplication::quit()
Y la diferencia entre (2) y (3)?
QApplication se deriva de QCoreApplication y, por lo tanto, hereda quit()
que es un espacio público de QCoreApplication
, por lo que no hay diferencia entre QApplication::quit()
y QCoreApplication::quit()
.
Como podemos leer en la documentación de QApplication::quit()
, "le dice a la aplicación que salga con el código de retorno 0 (éxito)". . Si desea salir porque descubrió daños en el archivo, puede que no desee salir con el código de retorno cero, lo que significa éxito, por lo que debe llamar a QCoreApplication::exit()
porque puede proporcionar un código de retorno distinto de cero que, por convención, indica un error.
Es importante tener en cuenta que "si el ciclo de eventos no se está ejecutando, esta función (QCoreApplication :: exit ()) no hace nada" , por lo que en ese caso debe llamar a exit(EXIT_FAILURE)
.
Si usas Qt Jambi, esto debería funcionar:
QApplication.closeAllWindows();
si necesita cerrar su aplicación desde main () puede usar este código
int main(int argc, char *argv[]){
QApplication app(argc, argv);
...
if(!QSslSocket::supportsSsl()) return app.exit(0);
...
return app.exec();
}
El programa finalizará si OpenSSL no está instalado
//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";