Qt प्रोग्राम छोड़ने का सही तरीका?


129

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

क्या मैं:

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

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

जवाबों:


145

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

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

यह ध्यान रखना महत्वपूर्ण है कि "यदि ईवेंट लूप नहीं चल रहा है, तो यह फ़ंक्शन (QCoreApplication :: exit ()) कुछ नहीं करता है" , इसलिए उस स्थिति में आपको कॉल करना चाहिए exit(EXIT_FAILURE)


30

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

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


3
मुझे निम्न कार्य करने की आवश्यकता थी:qApp->exit();
फ्रेडरिक ओलिंगर


-2

यदि आपको अपने एप्लिकेशन को मुख्य () से बंद करने की आवश्यकता है, तो आप इस कोड का उपयोग कर सकते हैं

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

ओपनएसएसएल स्थापित नहीं होने पर कार्यक्रम समाप्त हो जाएगा


1
मुझे लगता है कि यह संकलन नहीं है। app.exit (0) एक इंट वापस नहीं करता है। का उपयोग करें if(!QSslSocket::supportsSsl()) {return 0;};। क्योंकि इस लाइन पर app.exec () को नहीं बुलाया गया है, app.exit (0) कुछ नहीं करता है, QCoreApplication के प्रलेखन देखें: बाहर निकलें (): यदि ईवेंट लूप नहीं चल रहा है, तो यह फ़ंक्शन कुछ भी नहीं करता है।
सच्चा गाइर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.