2009-07-20 19 views
7

मैं कोड के इस टुकड़े के साथ कर रहा है रखें:क्यों QGraphicsItem :: scenePos करता है() लौट (0,0)

QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100); 
qDebug() << anotherLine->scenePos(); 

QGraphicsLineItem * anotherLine2 = this->addLine(80,10, 300, 300); 
qDebug() << anotherLine2->scenePos(); 

कहाँ this सूचक एक QGraphicsScene को दर्शाता है। दोनों मामलों में, मुझे दोनों आउटपुट के लिए QPointF(0,0) मिलते हैं।
दस्तावेज़ पढ़ने से, मैंने सोचा कि scenePos() दृश्य के भीतर रेखा की स्थिति को वापस करने वाला है, न कि यह स्थानीय समन्वय प्रणाली के भीतर है। मैं क्या गलत कर रहा हूं?

उत्तर

17

क्यूटी 4.5 दस्तावेज को addLine पर ध्यान से पढ़ने के बाद, मुझे एहसास हुआ कि मैं क्या गलत कर रहा हूं। दस्तावेज़ के अनुसार:

ध्यान दें कि आइटम की ज्यामिति आइटम निर्देशांक में प्रदान की जाती है, और इसके स्थिति के लिए आरंभ नहीं हो जाता (0, 0)

तो अगर मैं addLine 50,50 निर्दिष्ट (, 100, 100), मैं वास्तव में अपने स्थानीय आइटम समन्वय को संशोधित कर रहा हूं। धारणा मैंने बनाई है कि इसे एक दृश्य समन्वय के रूप में माना जाएगा गलत या निराधार है। मैं क्या कर किया जाना चाहिए इस

// Create a line of length 100 
QGraphicsItem * anotherLine = addLine(0,0, 100, 100); 

// move it to where I want it to be within the scene 
anotherLine->setPos(50,50); 

तो अगर मैं दृश्य के भीतर बनाकर एक पंक्ति जोड़कर हूँ, मैं करने के लिए (0,0) इसके केंद्र रीसेट करने की आवश्यकता है तो ले जाने के लिए setPos() का उपयोग मैं कहाँ इसे दृश्य में होना चाहते हैं।

उम्मीद है कि यह किसी भी समस्या पर ठोकर खाने में मदद करता है।

+0

मैंने इसे एक बार दोपहर का शिकार किया है! आपको बहुत - बहुत धन्यवाद! (भले ही यह धागा 3 साल पुराना हो) – HWende

संबंधित मुद्दे