我在类构造函数中有这段简单的代码,它继承自QGraphicsScene
:
setSceneRect(0,0,800,800);
addRect(sceneRect());
QGraphicsRectItem*r1 = addRect(200, 0, 5, 5);
qDebug()<<r1->pos();
这里我在pos(200,0)处添加了一个rect,但是qDebug()
打印了QPointF(0, 0)
!我完全糊涂了。
即使scenePos
返回(0,0)!这是真的吗?!
答案 0 :(得分:0)
矩形位于物品坐标系内的位置(200,0),但物品本身位于其父坐标系中的(0,0)处。
QGraphicsScene::addRect() documentation解释了这一点:
请注意,项目的几何图形以项目坐标提供,其位置初始化为(0,0)。例如,如果添加了QRect(50,50,100,100),其左上角将相对于项目坐标系中的原点位于(50,50)。
或者,您可以在0,0,5,5处添加一个矩形,然后移动该项目,以获得您期望的结果:
QGraphicsRectItem* r1 = addRect(0, 0, 5, 5);
r1->setPos(200, 0);