데이터 파일을로드하거나 파일 손상을 발견 한 경우와 같이 Qt 프로그램을 종료하려면 어떻게해야합니까? 사용자가이 앱을 종료하거나 데이터 파일을 다시 시작해야합니까?
내가해야합니까:
- 요구
exit(EXIT_FAILURE)
- 요구
QApplication::quit()
- 요구
QCoreApplication::quit()
그리고 (2)와 (3)의 차이점은 무엇입니까?
답변
QApplication은 QCoreApplication에서 파생되어 quit()
의 공개 슬롯 인 을 상속 QCoreApplication
하므로 QApplication::quit()
와 사이에는 차이가 없습니다 QCoreApplication::quit()
.
우리가 QCoreApplication::quit()
그것 의 문서에서 읽을 수 있듯이 “응용 프로그램이 리턴 코드 0 (성공)으로 종료하도록 지시합니다.” . 파일 손상을 발견하여 종료하려는 경우 성공을 의미하는 리턴 코드 0으로 종료하지 않을 수 있으므로 QCoreApplication::exit()
, 일반적으로 오류를 나타내는 0이 아닌 returnCode를 제공 할 수 있으므로 호출해야 합니다.
이 점에 유의하지하는 것이 중요하다 “않습니다 아무것도 이벤트 루프가 실행되고 있지 않은 경우,이 함수 (()을 QCoreApplication :: 출구)” 그래서 경우에 당신이 전화를해야합니다 exit(EXIT_FAILURE)
.
답변
에 전화 할 수 있습니다 qApp.exit();
. 나는 항상 그것을 사용하고 그것에 문제가 없었습니다.
애플리케이션이 명령 행 애플리케이션 인 경우 실제로 종료 코드를 리턴 할 수 있습니다. 코드가 무엇인지는 전적으로 귀하에게 달려 있습니다.
답변
Qt Jambi를 사용하는 경우 다음과 같이 작동합니다.
QApplication.closeAllWindows();
답변
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";