2013-01-01 53 views
4

每当我向QGraphicsScene添加新项目时,QGraphicsScene的原点似乎会改变为我刚添加的项目的位置。Qt QGraphicsScene来源点

如何使QGraphicsScene起源固定的吗?

我需要先添加项目在QGraphicsScene,然后指定项目的位置?

回答

4

好了,默认场景的内容将在QGraphicsView中心。图形场景的起源不会随机变化。

您可能希望使用setSceneRect()来定义场景的大小,以便QGraphicsView始终以固定方式将场景居中放置在视图中。 (如果没有手动设置,矩形将根据场景中的项目进行计算,如果添加更多项目,则矩形会发生变化。)

3

我回答一个相关的问题大约一年前,可能会有帮助:

How to draw a point (on mouseclick) on a QGraphicsScene?

同上什么badcat。

有调整或操纵你的视口(S),你已经在你的现场指点了很多的控制。场景设置了舞台上的东西。观点是你如何看待它。务必设置sceneRect或使用centerOnfitInViewscaletranslateQGraphicsView类别间接设置它。

http://qt-project.org/doc/qt-4.8/graphicsview.html

http://qt-project.org/doc/qt-4.8/qgraphicsview.html

+0

下面是另一个可能更清楚地说明问题的问题:当我在QGraphicsItem上调用QGraphicsItem :: setPos()时会发生什么,该QGraphicsItem没有父项,哪些不包含在任何场景中? – Chedy2149

+0

http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#setPos“该项目的位置在父坐标中描述其原点(本地坐标(0,0))。”所以换句话说,它将设置在将它添加到场景时最终到达的位置。 – phyatt

+0

如果你想抵消如何将变换应用到你的对象以后(比如让它旋转的矩形的中心而不是左上角,使用['QGraphicsItem :: setTransformOriginPoint()'](http:// qt- project.org/doc/qt-4.8/qgraphicsitem.html#transformOriginPoint)。 – phyatt