2011-11-06 15 views
96

मुझे एक क्यूटी प्रोग्राम कैसे छोड़ना चाहिए, उदाहरण के लिए डेटा फ़ाइल लोड करते समय, और फ़ाइल भ्रष्टाचार की खोज की गई, और उपयोगकर्ता को इस ऐप को छोड़ने या डेटा फ़ाइल को फिर से शुरू करने की आवश्यकता है?एक क्यूटी कार्यक्रम छोड़ने के लिए सही तरीका?

चाहिए मैं:

  1. कॉल exit(EXIT_FAILURE)
  2. कॉल QApplication::quit()
  3. कॉल QCoreApplication::quit()

और के बीच अंतर (2) और (3)?

उत्तर

107

QApplication QCoreApplication से ली गई है और इस तरह quit() जो QCoreApplication की एक सार्वजनिक स्लॉट है इनहेरिट करती है, तो वहाँ QApplication::quit() और QCoreApplication::quit() बीच कोई अंतर नहीं है।

जैसा कि हम quit() के प्रलेखन में पढ़ सकते हैं, यह "एप्लिकेशन को रिटर्न कोड 0 (सफलता) से बाहर निकलने के लिए कहता है।"। अगर आप बाहर निकलना चाहते हैं क्योंकि आपने फ़ाइल भ्रष्टाचार की खोज की है तो आप रिटर्न कोड शून्य से बाहर निकलना नहीं चाहते हैं जिसका अर्थ सफलता है, इसलिए आपको QCoreApplication::exit() पर कॉल करना चाहिए क्योंकि आप गैर-शून्य रिटर्न कोड प्रदान कर सकते हैं, जो कि, सम्मेलन द्वारा, एक त्रुटि इंगित करता है।

यह ध्यान रखें कि , ताकि मामले में आप exit(EXIT_FAILURE) बुलाना चाहिए "अगर घटना पाश नहीं चल रहा है, इस समारोह (QCoreApplication :: बाहर निकलें()) कुछ नहीं करता है" महत्वपूर्ण है।

27

आप qApp.exit(); पर कॉल कर सकते हैं। मैं हमेशा इसका उपयोग करता हूं और इसके साथ कोई समस्या नहीं थी।

यदि आप एक कमांड लाइन एप्लिकेशन है, तो आप वास्तव में एक निकास कोड वापस करना चाहते हैं। यह पूरी तरह से आपके ऊपर है कि कोड क्या है।

+0

Qt5 – YumYumYum

+1

Qt5 में काम नहीं करता है QT5 यह काम करता है QApplication :: quit() – YumYumYum

+0

मुझे निम्न कार्य करने की आवश्यकता है: 'qApp-> exit(); ' –

1

आप इस कोड

int main(int argc, char *argv[]){ 
QApplication app(argc, argv); 
... 
if(!QSslSocket::supportsSsl()) return app.exit(0); 
... 
return app.exec(); 
} 

कार्यक्रम समाप्त करता है, तो OpenSSL

+0

मुझे लगता है कि यह संकलित नहीं होता है। app.exit (0) एक int वापस नहीं करता है। 'अगर (! QSslSocket :: समर्थन एसएसएल()) का उपयोग करें {वापसी 0;}; '। चूंकि app.exec() को इस लाइन पर नहीं कहा गया है, app.exit (0) कुछ भी नहीं करता है, QCoreAplication :: Exit() के दस्तावेज़ देखें: _ अगर ईवेंट लूप नहीं चल रहा है, तो यह फ़ंक्शन कुछ भी नहीं करता है ._ –

-2

स्थापित नहीं है आप क्यूटी जाम्बी, इस करना चाहिए उपयोग कर रहे हैं होगा उपयोग कर सकते हैं अगर आप मुख्य() से अपने अनुप्रयोग को बंद करने की जरूरत है काम:

QApplication.closeAllWindows(); 
0
//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"; 

example

+0

होगा यदि आप कोड स्वरूपण को ठीक करते हैं तो पढ़ने के लिए आसान है। – Shashanth

संबंधित मुद्दे