मेरी परियोजना में मैं QGraphicsScene
का उपयोग कर रहा हूं और कोड भर में आइटम जोड़ रहा/निकाल रहा हूं।AddItem या itemChange पर QGraphicsScene से अधिसूचनाएं कैसे प्राप्त करें?
अब जब भी QGraphicsItem
जोड़ा या हटा दिया जाता है तो मैं अधिसूचित होना चाहता हूं। कई क्यूटी कक्षाओं में अधिसूचना सिग्नल या कम से कम आभासी कार्य होते हैं जिन्हें ऐसे परिवर्तनों पर बुलाया जाता है। मैं कई जगहों पर कोड की कई पंक्तियों को जोड़ने से बचने की कोशिश कर रहा हूं जो न केवल बोझिल है बल्कि असुरक्षित है (अब या भविष्य में एक डालने/हटाने को भूलना)।
मुझे किसी समाधान की आवश्यकता है जो QGraphicsItem
के साथ काम करता है। > कोई नहीं है -
- (
QAbstractItemModel::rowsInserted()
के रूप में)QGraphicsScene
के सिग्नल से कनेक्ट:यह चीजें हैं जो काम नहीं करते की एक सूची है।
QGraphicsScene
से प्राप्त होता है और वर्चुअल नोटिफ़ायर फ़ंक्शन (जैसेQTabWidget::tabInserted()
) -> कोई भी नहीं है।- इनहेरिट और अधिभार
addItem()
, भेजने सूचनाएं अपने आप (QMdiArea::addSubWindow()
के रूप में) ->addItem
आभासी नहीं है औरQGraphicsItems
के निर्माताओं से कहा जाता हो जाता है। - नए जोड़े गए
QGraphicsItems
पर ईवेंट फ़िल्टर इंस्टॉल करें -> यह नहीं पता कि नया जोड़ा गया आइटम कैसे प्राप्त करें और यहsceneEventFilter
होगा जो केवलQGraphicsItems
पर स्थापित किया जा सकता है। QGraphicsItem
से कनेक्ट करें ->itemChange
सिग्नल नहीं है और ओवरलोडिंगQGraphicsItem
एक विकल्प नहीं है।- रैप
QGraphicsScene
(एक निजी सदस्य के रूप में दृश्य वाले) और केवल कार्यों का पर्दाफाशaddItem
औरremoveItem
-> लेकिन उस दृश्य अभी भीscene()
समारोह के माध्यम से उस तक पहुँच सकता है मेंQGraphicsItems
, तो यह समाधान पर्याप्त सुरक्षित नहीं है।
आइटम परिवर्तनों पर मुझे सूचनाएं कैसे प्राप्त हो सकती हैं?
यदि कोई आसान तरीका है जिसे मैं बस याद करता हूं, तो कृपया मुझे इंगित करें। अन्यथा, मैं इस पर विचारों की सराहना करता हूं।
मुझे लगता है कि सबसे अच्छा तरीका केवल QGraphicsScene को लपेटना है और रैपर में अपना 'addItem()' फ़ंक्शन प्रदान करना है। – pmr
यह शर्म की बात है कि आप 'QGraphicsItem' को उपclass नहीं कर सकते हैं क्योंकि इसके दृश्य दृश्य (दृश्य जोड़/निकालने सहित) इसके' sceneEvent (QEvent * ईवेंट) 'विधि के माध्यम से चलाया जाता है - जो आपकी समस्या के लिए एक बहुत ही साफ और ट्यून करने योग्य समाधान प्रदान करता है। – cmannett85
@pmr जैसा कि मैंने कहा था, 'addItem() 'फ़ंक्शन आभासी नहीं है और' QGraphicsItem 'के रचनाकारों से बुलाया जाता है। तो यह एक पूरा समाधान नहीं होगा। –