2009-07-20 4 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

addLine에서 QT 4.5 문서를주의 깊게 읽은 후에 내가 잘못하고있는 것을 깨닫습니다. 해당 문서에 따르면

참고 항목의 형상이 항목이 좌표에 제공되고, 그 위치가 초기화된다 (0, 0)

을 그래서 (50,50를 addLine를 지정하는 경우 , 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