QGraphicsItem::scenePos()가 계속 (0,0)을 반환하는 이유는 무엇입니까?
-
18-09-2019 - |
문제
나는 다음과 같은 코드를 가지고 놀았습니다.
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()를 사용하여 장면에서 원하는 위치로 이동해야 합니다.
이것이 동일한 문제를 겪는 사람에게 도움이 되기를 바랍니다.
제휴하지 않습니다 StackOverflow