मैं किसी ऑब्जेक्ट की वैश्विक स्थिति (या इसके पूर्वजों के सापेक्ष) को ट्रैक करना चाहता हूं और इसे किसी अन्य आइटम की स्थिति से जोड़ना चाहता हूं।क्यूएमएल - एक घटक की वैश्विक स्थिति को ट्रैक करना
मैं mapFromItem
का उपयोग कर के रूप में इस के बारे में सोच रहा था: इस दृष्टिकोण के साथ
SomeObject {
x: ancestor.mapFromItem(trackedObject, trackedObject.x, 0).x
y: ancestor.mapFromItem(trackedObject, 0, trackedObject.y).y
}
समस्या यह है कि एक बार mapFromItem
मूल्यांकन किया जाता है और के रूप में यह में से एक तर्क अद्यतन हो जाता है अद्यतन नहीं करता है। इसके अलावा मैपिंग कभी-कभी ऑफसेट द्वारा बदली गई नई स्थिति लौटाती है, मैं कोड में ट्रैक करने में असमर्थ हूं (लेकिन यह मामला हाथ में नहीं है)।
मेरा दूसरा विचार एक ऐसी क्रिया को लागू करके वैश्विक स्थिति की गणना करना था जो प्रदान किए गए पूर्वजों (calculateOffsetFrom(ancestor)
जैसे कुछ) पर रोक लगाता है। फिर भी यह केवल एक कार्य है और जहां तक मेरा संबंध है, इसे पूर्वजों की स्थिति में परिवर्तनों में से एक के रूप में फिर से मूल्यांकन नहीं किया जाएगा (जब तक कि उस कार्य में, मैं इसे onXChanged
सिग्नल में प्रत्येक के लिए कॉल करने के लिए बाध्य करूंगा रास्ते में पूर्वजों, जो एक गंदे समाधान की तरह लगता है)। वस्तु मैं ट्रैक करने के लिए चाहते हैं और करने के लिए
तो अंत में मैं जोड़ दिया है गुण तो मैं उन्हें करने के लिए बाध्य:
TrackedObject {
property real offsetX: x + parent.x + parent.parent.x + parent.parent.parent.x ...
property real offsetY: y + parent.y + parent.parent.y + parent.parent.parent.y ...
}
SomeObject {
x: trackedObject.globalX
y: trackedObject.globalY
}
लेकिन अच्छी तरह से ... हाँ ... यह एक पर पैमाने पर नहीं है सब कुछ और बदसूरत के रूप में यह हो जाता है।
क्या किसी को पता है कि क्लीनर तरीके से इस समस्या को हल किया जा सकता है?
संपादित करें: जहां तक मुझे चिंतित है मैं इस मामले में एंकर का उपयोग नहीं कर सकता। SomeObject
घटक एक कस्टम घटक है जो एक बिंदु से दूसरे बिंदु पर एक बेजियर वक्र खींचता है (यह दो TrackedObjects
कनेक्ट करेगा)। इसके लिए मुझे निर्देशांक के बीच अंतर की आवश्यकता है। यदि मैं सही एंकर हूं तो उनके बीच की दूरी की गणना करने का कोई तरीका नहीं प्रदान करता है।
धन्यवाद एक बहुत। सोचा नहीं होगा कि फिर से मूल्यांकन करने के लिए उस वैश्विक ध्वज का उपयोग करने का विचार किया गया है। यह गंदे लगता है लेकिन यह चाल है। –