2015-02-06 1 views
0

qGraphicsScene에 추가 한 사용자 지정 qGraphicsRectItem을 만들었습니다. 해당 로컬 좌표를 사용하여이 사용자 지정 사각형에 텍스트를 추가하고 싶습니다 (즉, 0,0에 추가하면 내 장면의 위치에 관계없이 사각형의 원점에 항목이 배치됩니다) 그렇게하려고하면 이렇게됩니다. 장면의 좌표계와 텍스트가 사각형 밖으로 나타납니다. 어떤 아이디어?로컬 좌표를 QGraphicsItem에 사용하는 방법

PackageRect::PackageRect(QString PackageName, qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent) 
    :QGraphicsRectItem(x, y, w, h, parent) 
{ 

    QGraphicsTextItem *text = new QGraphicsTextItem(PackageName, this); 
    text->setPos(0,0); 
} 

답변

0

당신이하려는 것은 "그룹화 된"항목에서 사용되는 경향이 있습니다.

포함 mapTo* 여러 가지 기능이 있습니다

QPointF mapToItem(const QGraphicsItem * item, const QPointF & point) const 
QPointF mapFromItem(const QGraphicsItem * item, const QPointF & point) const 
QPointF mapFromScene(const QPointF & point) const 
QPointF mapToScene(const QPointF & point) const 

http://doc.qt.io/qt-5/qgraphicsitem.html

기본적으로 상황이 변화의 매핑 기능 매핑 호출의 동작을 요구하고있다.

QGraphicsItem 하위 클래스에 있고 this->mapToItem(myRect, QPointF(0,0));을 호출하면 사각형의 좌표계로 값을 반환합니다.

마찬가지로, QGraphicsItem 하위 클래스에 있고 this->mapFromItem(myRect, QPointF(0,0));이라고하면 원래 항목의 좌표계를 기준으로 값을 반환합니다. 여기서 0,0은 사각형의 왼쪽 상단입니다.

여기 좌표계에 대한 문서입니다 :

http://doc.qt.io/qt-5/graphicsview.html#the-graphics-view-coordinate-system

그러나 당신이 QGraphicsView, 그룹을 개체를 그룹화하고 주위의 그룹을 이동하는 경우.

http://doc.qt.io/qt-5/graphicsview.html#item-groups

http://doc.qt.io/qt-5/qgraphicsitemgroup.html#details

희망하는 데 도움이.

0

setPos는 0,0을 제외하고 x, y를 만듭니다. for me :

rectText::rectText(QString PackageName, qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent) 
    :QGraphicsRectItem(x, y, w, h, parent) 
{ 
    QGraphicsTextItem *text = new QGraphicsTextItem(PackageName, this); 
    text->setPos(x, y); 
} 

텍스트는 상자 안에 있습니다.

+0

x와 y 좌표를 사용하면 장면의 상자가 사각형의 원점에있는 위치가 중요하지 않습니다. –

+0

사실, 장면의 좌표계를 사용하지만 항목의 로컬 좌표 체계는 사용하지 않습니다. – user1337

관련 문제