문제

나는 다음과 같은 코드를 가지고 놀았습니다.

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() 로컬 좌표계 내의 위치가 아니라 장면 내 선의 위치를 ​​반환해야 합니다.내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움이 되었습니까?

해결책

QT 4.5 문서를 주의 깊게 읽은 후 추가라인, 나는 내가 뭘 잘못하고 있는지 깨달았습니다.문서에 따르면:

항목의 형상은 항목 좌표로 제공되며 위치는 (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()를 사용하여 장면에서 원하는 위치로 이동해야 합니다.

이것이 동일한 문제를 겪는 사람에게 도움이 되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top