अगर मैं delete
का उपयोग कर QWidget
हटाता हूं, तो क्या यह स्वयं को जीयूआई से पंजीकृत करता है या क्या मुझे इसे मैन्युअल रूप से करना है? क्या इस व्यवहार के लिए कोई तार्किक कारण है?क्या एक QWidget विनाश पर जीयूआई से खुद को हटा देता है?
उत्तर
जब आप लेआउट या स्टैक्ड विजेट पर addWidget
पर कॉल करते हैं तो विजेट का स्वामित्व लेआउट/स्टैक्ड विजेट में स्थानांतरित हो जाता है। इसका मतलब यह है कि यदि लेआउट/स्टैक्ड विजेट हटा दिया जाता है तो इसमें जोड़े गए सभी विजेट भी हटा दिए जाते हैं।
के साथ समाप्त होने के बाद विजेट को हटाने के लिए बिल्कुल ठीक है। स्वामित्व वस्तुओं के पदानुक्रम की स्मृति को साफ़ करने का एक सुविधाजनक तरीका है। यह किसी भी तरह से नहीं कहता है कि जिस वस्तु का मालिक है उसे हटा देना चाहिए। यदि वह मामला था तो एक बार जब आप अपने सभी विजेट जोड़ते हैं तो आप केवल उन सभी से छुटकारा पाने में सक्षम होंगे या कोई भी नहीं!
यदि आप लेआउट/स्टैक्ड विजेट हटा दिए जाने पर अपना विजेट हटाना नहीं चाहते थे तो आप removeWidget
पर कॉल करेंगे। ध्यान दें कि यह स्पष्ट नहीं है कि विजेट का स्वामित्व वास्तव में कहां जाता है। एक साधारण परीक्षण ऐप। मैंने अभी लिखा है कि removeWidget
ने स्वामित्व को QStackedWidget
से भी दूर स्थानांतरित नहीं किया है!
तो, अपने प्रश्न का उत्तर देने के लिए, यदि आप इसे हटाते हैं तो क्यूटी लेआउट/स्टैक्ड विजेट से विजेट को सही ढंग से हटा देगा। इसके अलावा यह विजेट 0 को हटाने के लिए सही तरीका है यदि यह अब लेआउट/स्टैक्ड विजेट में नहीं है।
जैसा कि पहले से ही @CatPlusPlus द्वारा इंगित किया गया है, क्यूटी एक स्वामित्व प्रणाली का उपयोग करता है। तो जब भी आप विगेट्स को लेआउट या लेआउट में विजेट जोड़ते हैं और आगे तो योजक के स्वामित्व को योजक/अभिभावक को दिया जाता है। यह आमतौर पर विधि प्रलेखन में प्रलेखित किया जाता है। उदाहरण के लिए यदि आप QWidget :: addLayout (QLayout *) के लिए प्रलेखन देखते हैं, तो यह कहता है कि Qwidget QLayout का स्वामित्व लेता है। जब आप माता-पिता को हटा देते हैं तो यह अपने सभी बच्चों को भी हटा देता है। अधिक जानकारी के लिए इस आलेख को पढ़ें। क्योंकि पारंपरिक C++ डेवलपर ढेर पर आबंटित स्मृति के हर बिट का ट्रैक रखने के लिए है
Object Trees and Ownership in Qt
इस विधि बहुत उपयोगी है। हालांकि इस स्वामित्व प्रणाली के लिए डेवलपर ऑनल माता-पिता का ट्रैक रखता है।
+1 हालांकि यह सीधे प्रश्न का उत्तर नहीं देता है (क्योंकि प्रश्न को हाँ/कोई प्रश्न के रूप में phrased किया गया था, लेकिन कोई जवाब नहीं दिया गया था), इस उत्तर में दिए गए लिंक में उत्तर होता है "जब पेड़ में कोई भी QObject हटा दिया जाता है, यदि ऑब्जेक्ट में माता-पिता हैं, तो विनाशक स्वचालित रूप से ऑब्जेक्ट को अपने माता-पिता से हटा देता है।" तो इस जवाब के लिए +1। – blwy10
- 1. QWidget
- 2. क्या इनपुट/आउटपुटस्ट्रीम विनाश पर बंद है?
- 3. स्ट्रिंग.Trim() आवश्यकता से अधिक हटा देता है?
- 4. क्या गीट प्रवाह रिमोट सर्वर पर शाखा हटा देता है?
- 5. एक QWidget
- 6. क्यूटी - QWidget: जब कोई जीयूआई उपयोग नहीं किया जा रहा है तो QWidget नहीं बना सकता
- 7. TransitionFromView पिछले दृश्य को हटा देता है
- 8. एक QTidbar पर एक QWidget छुपा?
- 9. CoreDataGeneratedAccessors - removeObject ऑब्जेक्ट को हटा देता है?
- 10. क्या कक्षा का उदाहरण आत्म-विनाश कर सकता है?
- 11. क्या ArrayList.clear() सभी निहित objecs को भी हटा देता है?
- 12. क्या हटाएं बच्चे वास्तव में तत्व को हटा देता है?
- 13. विनाश
- 14. क्या गिट में एक शाखा को हटाना इतिहास से हटा देता है?
- 15. क्या एंड्रॉइड यूआई विकास एक कणिका डिजाइन पैटर्न के लिए खुद को उधार देता है?
- 16. क्या कोई ऐसा ऐप है जो अप्रयुक्त वर्गों को ढांचे से हटा देता है?
- 17. एक QWidget की ऊंचाई ढूँढना से पहले
- 18. विम स्वचालित रूप से पायथन टिप्पणियों पर इंडेंटेशन को हटा देता है
- 19. क्या जीएचसी संभव होने पर पॉलिमॉर्फिक इंडिकेशन को हटा देता है?
- 20. ऑब्जेक्ट विनाश पर एक आंतरिक pysqlite कनेक्शन की सफाई
- 21. ग्रुप बाय डुप्लिकेट को हटा नहीं देता
- 22. #pragma हस्ताक्षर के आधार पर एक फ़ंक्शन को हटा देता है? विजुअल स्टूडियो में
- 23. से खुद को
- 24. गिट चेकआउट/पुल निर्देशिका को हटा नहीं देता है?
- 25. मैं इस विधि को कैसे बढ़ा सकता हूं जो एक स्ट्रिंग से टेक्स्ट हटा देता है?
- 26. TreeMap put() चुपचाप अन्य प्रविष्टियों को हटा देता है?
- 27. backbone.js: कॉलिंग संग्रह .reset() मॉडलों को भी हटा देता है?
- 28. एक .NET प्रोग्राम खुद को कैसे अपडेट कर सकता है?
- 29. एचटीएमएल संख्या इनपुट दशमलव बिंदु को हटा देता है?
- 30. क्या एक PHP फ़ाइल निष्पादन पर खुद को हटाने के लिए संभव है?
"अपंजीकृत" से आपका क्या मतलब है? – Troubadour
जब मैं किसी विंडो में विजेट जोड़ना चाहता हूं, तो मुझे 'addWidget' कॉल करना होगा। इसी प्रकार मैं खिड़की से विजेट को हटाने के लिए 'removeWidget' कर सकता हूं। मैं जानना चाहता हूं कि कोई विजेट स्वचालित रूप से ऐसा करता है जहां इसे हटाया जा रहा है जब इसे पंजीकृत किया गया हो। – Pieter
क्यूटी स्वामित्व प्रणाली का उपयोग करता है, यदि आप किसी अन्य चीज़ के स्वामित्व में हैं तो वे विजेट को मैन्युअल रूप से हटा नहीं सकते हैं (माता-पिता उन्हें हटा देंगे)। –