शायद मैं डॉक्स अलग तरह से आप की तुलना में (मैं स्रोत को देखा नहीं किया है) की व्याख्या कर रहा हूँ:
QGraphicsItem :: ~ QGraphicsItem() [आभासी]
QGraphicsItem और अपने सभी बच्चों को नष्ट कर। यदि यह आइटम वर्तमान में दृश्य से जुड़ा हुआ है, तो आइटम को हटाए जाने से पहले दृश्य से हटा दिया जाएगा।
नोट: आइटम को नष्ट करने से पहले QGraphicsScene से आइटम को निकालना अधिक कुशल है।
मैं ले इसका मतलब यह करने के लिए पहले नष्ट करने और अधिक कुशल है कि क्योंकि से पहले ही दृश्य से निकाल देंगे। लेकिन अगर आप कहते हैं कि स्रोत कहीं भी इंगित नहीं करता है कि ऐसा होता है, तो ऐसा लगता है कि दस्तावेज़ गलत होंगे?
अगर मुझे यह अनुमान लगाना पड़ा कि यह नष्ट करने से पहले आइटम को हटाने के लिए और अधिक कुशल क्यों होगा (भले ही एपीआई वास्तव में विनाशक में आपके लिए करता है), मुझे लगता है कि इसे करना होगा दृश्य को रीइंडेक्स में ट्रिगर करने के साथ क्या करें। हो सकता है कि किसी आइटम को अभी भी दृश्य में हटाकर, बाल वस्तुओं के कैस्केडिंग हटाना लगातार दृश्य को रीइंडेक्स में ट्रिगर करेगा। हालांकि, अगर आप पहले आइटम को हटाना चाहते थे, तो यह पूरी तरह से पूरे पदानुक्रम को इस तरह से खींच सकता है कि केवल दृश्य के एक ही अपडेट की आवश्यकता हो, और फिर सामान्य विलोपन इसे और प्रभावित किए बिना हो सकता है? दृश्य में हटाए जाने पर अन्य बच्चे की घटनाओं/संकेतों के अधिक प्रभावशाली प्रभाव भी हो सकते हैं।
मैं "नोट" के पीछे तर्क को सट्टेबाजी कर रहा हूं जो उन लोगों को सूचित करना है जो QGraphicsItem को उपclass करेंगे और पहले दृश्य से हटाने की आवश्यकता को ध्यान में रखने के लिए विनाशक को अधिभारित करेंगे।
इसके लिए धन्यवाद। मैंने फिर से स्रोत की जांच की और वास्तव में एक रेखा है जो जांचती है कि दृश्य मौजूद है या नहीं, और यदि ऐसा है, तो 'd_ptr-> scene-> d_func() -> निकालें ItemHelper (यह); '। मुझे लगता है कि यह होना चाहिए। तो ऐसा लगता है कि आप सही हैं, नोट शायद थोड़ा भ्रामक हो सकता है (या तो वह या मैं एक डूफस हूं)। – Anthony
@ एंथनी: मैं सिर्फ भ्रामक के साथ जाने जा रहा हूं :-)। डॉक्स उपयोगी होने के लिए हैं, और यदि यह आपको भ्रमित कर रहा था, तो यह एक वैध अवलोकन है। पुष्टि करने के लिए स्रोत के माध्यम से जांच करने पर अच्छा काम। – jdi