2013-12-21 64 views
0

我這個簡單的代碼在從QGraphicsScene繼承一個類的構造函數:QGraphicsRectItem :: pos()函數返回不是預期的東西?

setSceneRect(0,0,800,800); 
addRect(sceneRect()); 
QGraphicsRectItem*r1 = addRect(200, 0, 5, 5); 
qDebug()<<r1->pos(); 

在這裏,我在pos(200,0),但qDebug()打印QPointF(0, 0)添加一個矩形!我完全困惑。 即使scenePos也會返回(0,0)!這是真的嗎?!

回答

0

矩形位於項目座標系內的位置(200,0),但項目本身位於其父座標系的(0,0)處。

QGraphicsScene::addRect() documentation解釋這一點:

需要注意的是該項目的幾何形狀項提供的座標,它的位置被初始化爲(0,0)。例如,如果添加了QRect(50,50,100,100),則其左上角相對於項目座標系中的原點位於(50,50)處。

QGraphicsRectItem* r1 = addRect(0, 0, 5, 5); 
r1->setPos(200, 0); 

或者,您也可以在0,0,5,5),之後移動的項目,以獲得您預期的結果添加一個矩形

相關問題