在 Qt 框架中,QWidget、QGraphicsView、QGraphicsScene 和 QGraphicsRectItem 确实都与坐标系统有关,但它们各自的坐标系统有所不同,且它们之间存在着一定的关系。以下是对这四个对象坐标系统的解释和它们之间的关系:
- QWidget:
QWidget使用的是窗口坐标系统。这是基于屏幕像素的坐标系统,原点 (0,0) 通常在窗口的左上角。QWidget的坐标系统是其子控件布局和定位的基础。
- QGraphicsView:
QGraphicsView本身也是一个QWidget,因此它也有自己的窗口坐标系统。QGraphicsView提供了一个视图来展示QGraphicsScene的内容。这个视图可以缩放和旋转,从而改变场景内容的显示方式。
- QGraphicsScene:
QGraphicsScene使用的是场景坐标系统,这是一个逻辑坐标系统,与屏幕像素无关。- 场景的原点 (0,0) 是在场景的左上角,但与
QGraphicsView的显示窗口大小和位置无关。 QGraphicsScene的坐标系统用于定义和布局其中的图形项(如QGraphicsRectItem)。
- QGraphicsRectItem (以及其他 QGraphicsItem 派生类):
- 这些图形项使用
QGraphicsScene的坐标系统来定义它们在场景中的位置和大小。 - 图形项的坐标是相对于场景原点的,而不是相对于视图或窗口的。
- 这些图形项使用
关系:
- 当你在
QGraphicsScene中添加一个QGraphicsRectItem时,你会指定其在场景坐标系统中的位置和大小。 QGraphicsView负责将QGraphicsScene的内容映射到其自己的窗口坐标系统中进行显示。这包括处理任何缩放、旋转或平移变换。- 如果
QGraphicsView被嵌入到一个QWidget中,那么QGraphicsView的窗口坐标系统将是相对于其父QWidget的。
简而言之,每个对象都有其自己的坐标系统,这些坐标系统通过 QGraphicsView 的变换功能相互关联。QGraphicsScene 和其内部的图形项使用逻辑坐标,而 QGraphicsView 和 QWidget 则使用基于屏幕的像素坐标。
1万+

被折叠的 条评论
为什么被折叠?



