2016-09-09 6 views
5

में छिपाने, बंद करने और दिखाने के बीच अंतर, पुशबटन या छिपाने के मामले में किसी भी विजेट को छुपाएं, बंद करें और शो के बीच क्या अंतर है?क्यूटी

यदि बेहतर है कि मैं विजेट का फिर से उपयोग नहीं करना चाहता तो बेहतर होगा?

+0

क्या आपने उन स्लॉट के लिए प्रलेखन पढ़ने का प्रयास किया है? – Hayt

उत्तर

0

Qt के अनुसार, आप इस पढ़ सकते हैं:

बंद: इस विजेट बंद करता है। विजेट बंद होने पर सत्य वापस आता है; अन्यथा झूठी वापसी करता है।

सबसे पहले यह विजेट को QCloseEvent भेजता है। विजेट छिपा हुआ है अगर यह नज़दीकी घटना स्वीकार करता है। अगर यह घटना को अनदेखा करता है, तो कुछ भी नहीं होता है। QWidget :: closeEvent() का डिफ़ॉल्ट कार्यान्वयन निकट ईवेंट स्वीकार करता है।

यदि विजेट में Qt :: WA_DeleteOnClose ध्वज है, तो विजेट भी हटा दिया गया है। विजेट पर एक करीबी घटनाएं वितरित की जाती हैं चाहे कोई भी विजेट दिखाई दे या नहीं। जब क्यूटी :: के साथ पिछले दिखाई प्राथमिक खिड़की (अर्थात् कोई माता पिता के साथ विंडो) WA_QuitOnClose विशेषता निर्धारित बंद कर दिया है

QApplication :: lastWindowClosed() संकेत उत्सर्जित होता है। डिफ़ॉल्ट रूप से यह विशेषता स्प्लैश स्क्रीन, टूल विंडो और पॉपअप मेनू जैसे क्षणिक विंडो को छोड़कर सभी विजेट्स के लिए सेट है।

छिपाएं: विजेट छुपाता है। यह कार्य सेट दृश्यमान (झूठा) के बराबर है।

नोट: यदि आप QDialog या उसके उपवर्गों के साथ काम कर रहे हैं और आप इस समारोह के बाद आह्वान शो() फ़ंक्शन, तो संवाद अपनी मूल स्थिति में प्रदर्शित किया जाएगा।

दिखाएं: विजेट और उसके बच्चे विजेट दिखाता है। यह फ़ंक्शन सेट करने योग्य (सत्य) के बराबर है।

यदि आपको अपने विजेट का उपयोग करने की आवश्यकता नहीं है, तो close() पर कॉल करें। आप अपने विजेट को नष्ट करने के लिए ईवेंट का प्रबंधन कर सकते हैं।

hide() केवल छुपाएं। यह केवल ग्राफिकल है, आप अपना विजेट नहीं देख सकते लेकिन आप इसे नष्ट नहीं करते हैं।

लेकिन मुझे लगता है कि फ़ंक्शन का नाम समझने के लिए पर्याप्त स्पष्ट है!

5

पहले @Hayt, read प्रलेखन के रूप में कहा गया था।

वास्तविक जवाब के लिए:

  1. hide()setVisible(false) के समान है।
  2. show()setVisible(true) जैसा ही है। बुला hide() अगर Qt::WA_DeleteOnClose विशेषता विजेट जो डिफ़ॉल्ट है पर सेट नहीं है के रूप में

    1. ही:

    2. close() प्रयास QCloseEvent ट्रिगर द्वारा विजेट बंद करने के लिए, अगर घटना परिणाम स्वीकार किया जाता है।

    3. deleteLater() पर कॉल करने जैसा ही Qt::WA_DeleteOnClose सेट है।

स्मृति की अवधि में, 3 में से किसी के लिए कुछ भी नहीं बदलेगा (छोड़कर close() के लिए यदि आप Qt::WA_DeleteOnClose निर्धारित किया है)। यदि आप कभी भी विजेट का उपयोग नहीं करना चाहते हैं, तो सबसे अच्छा इसे हटाने के लिए है: के रूप में 1 से एक है, जहां पर निर्भर करता है खतरनाक हो सकता है

delete pointerToMyWidget; 

या

pointerToMyWidget->deleteLater(); 

दूसरा रूप आम तौर पर सुरक्षित है आपके इसे लिखो। (उदाहरण के लिए आप इसे हटाए गए विजेट द्वारा उत्सर्जित सिग्नल द्वारा बुलाए गए स्लॉट में हटा दें)।

+0

आप विजेट ((मेमोरी को रिहा कर सकते हैं) विजेट को बंद() के साथ हटा सकते हैं, बस सिग्नल को प्रबंधित करना था। –

+0

या आप इसे 'हटाएं' पर कॉल करके हटा सकते हैं। –

+0

धन्यवाद :) मुझे वह चाहिए जो मैं चाहता था –