Qt QGraphicsScene 原点

6

每当我向QGraphicsScene添加新项目时,QGraphicsScene的原点似乎会根据我刚刚添加的项目位置而改变。

如何使QGraphicsScene的原点固定?

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

3个回答

4

默认情况下,场景的内容将在 QGraphicsView 中居中。图形场景的原点不会随机更改。

您可能希望使用 setSceneRect() 来定义场景的大小,这样 QGraphicsView 就可以始终以固定的方式将场景居中于视图中。(如果您没有手动设置它,矩形将根据场景中的项计算,如果添加更多项,则会更改。)


3

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

如何在QGraphicsScene上绘制一个点(鼠标单击)?

同意badcat所说。

有很多控件可以调整或操作您指向场景的视口。场景设置了舞台上的内容,视图是您查看它的方式。请务必使用QGraphicsView类中的sceneRect或通过centerOnfitInViewscaletranslate间接设置它。

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

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


这里有另一个问题,可能更清楚地阐述了问题:当我在没有父项且不包含在任何场景中的 QGraphicsItem 上调用 QGraphicsItem :: setPos() 时会发生什么? - Chedy2149
该项的位置描述了它在父级坐标系中的起点(本地坐标(0, 0))。换句话说,当该项被添加到场景中时,它设置了将要结束的位置。 - phyatt
如果您想稍后偏移应用于对象的转换方式(例如使矩形的中心旋转而不是左上角),请使用 QGraphicsItem::setTransformOriginPoint() - phyatt

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接