QGraphicsRectItem :: pos()函数返回不期望的东西?

时间:2013-12-21 09:21:27

标签: qt qgraphicsitem qgraphicsscene

我在类构造函数中有这段简单的代码,它继承自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)!这是真的吗?!

1 个答案:

答案 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);