2012-01-11 18 views
6

समस्या निम्नानुसार है: यदि एप्लिकेशन बंद है, तो यह सक्रिय रूप से कुछ भी नहीं कर रहा है, तो यह सही ढंग से बाहर निकलता है। यदि यह कुछ सक्रिय रूप से काम कर रहा है (उदाहरण के लिए, थोड़ी देर में प्रतीक्षा कर रहा है), हालांकि, मुख्य विंडो बंद हो जाएगी, लेकिन कार्य प्रबंधक खोलकर पुष्टि की गई है कि कार्यक्रम पृष्ठभूमि में चलना जारी रहेगा।क्यूटी ऐप मेनविंडो बंद होने के बाद भी स्मृति में रहता है

मैंने आज समस्या का गुमराह करने और संभावित सुधारों को लागू करने का एक अच्छा हिस्सा बिताया है, लेकिन इसका कोई फायदा नहीं हुआ है। ऐसा लगता है कि छोड़ने() फ़ंक्शन बस कुछ भी नहीं करता है। यहां कुछ चीजें हैं जिनकी मैंने कोशिश की है:

  • app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); का उपयोग करना। मुझे पता है कि संकेत ट्रिगर किया गया है, क्योंकि मैंने &app, SLOT(quit()) को qApp, SLOT(aboutQt()) में बदलने की कोशिश की और लगभग क्यूटी विंडो संक्षिप्त रूप से पॉप अप हो गई।
  • एक मुख्य विंडो बटन से चलने वाले फ़ंक्शन की शुरुआत में qApp->quit(); सहित। एप्लिकेशन उस रेखा पर चलता है, लेकिन इसका कोई प्रभाव नहीं पड़ता है।
  • यह सुनिश्चित करने के लिए कि GUI अपडेट किया जा रहा है, processEvents() का उपयोग कर।
  • मेन.cpp में mainWindow.setAttribute(Qt::WA_QuitOnClose); जैसे विवरण शामिल हैं।

मैं चाहता हूं कि मुख्य विंडो बंद होने पर एप्लिकेशन को पूरी तरह से बाहर निकलना पड़े।

मैं qextserialport लाइब्रेरी का उपयोग कर रहा हूं, अगर इससे कोई फर्क पड़ता है।

+0

क्या आपका आवेदन मल्टीथ्रेड है? – Lol4t0

+0

मैं व्यक्तिगत रूप से धागे नहीं बना रहा हूं, लेकिन मुझे यकीन नहीं है कि मैं जिस लाइब्रेरी का उपयोग कर रहा हूं वह है। अगर मैं डीबगर खोलता हूं और धागे के नीचे देखता हूं तो मुझे "ntdll! LdrFindResourceEx_U" फ़ंक्शंस का एक गुच्छा दिखाई देगा। हालांकि, मैं केवल कार्य प्रबंधक प्रक्रियाओं में अपने प्रोग्राम का एक उदाहरण देखता हूं। पीएस: क्यों नरक एंटर दबाएगा एक लाइनबैक बनाने के बजाय संदेश भेजें? – SharpHawk

+0

फिर आपका मुख्य धागा उन धागे को अपने काम को पूरा करने के लिए इंतजार कर सकता है। यह पूरी तरह से किया जा सकता है, उदाहरण के लिए, वस्तुओं के विनाशक धागे खत्म होने की प्रतीक्षा कर सकते हैं। आपको अपने पुस्तकालय कोड का अध्ययन करना चाहिए। पीएस 'qextserialport', जहां तक ​​मुझे पता है कि कोई धागा नहीं बना है। – Lol4t0

उत्तर

1

मुझे नहीं पता कि क्या गलत है, लेकिन जैसा कि आपका स्लॉट वास्तव में सिग्नल प्राप्त करता है, आप उस स्लॉट फ़ंक्शन से exit() पर कॉलराउंड के रूप में कॉल कर सकते हैं।

+0

मुझे लगता है कि यह एक खराब समाधान है, क्योंकि अगर किसी अन्य थ्रेड में एप्लिकेशन कुछ संसाधित करता है, तो टीएस कुछ डेटा दूषित हो सकता है – Lol4t0

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

  • कोई संबंधित समस्या नहीं^_^