QGraphicsView和QGraphicsScene坐标系

时间:2014-01-27 13:55:53

标签: c++ qt

在Qt 4.8中,我创建了一个QGraphicsView和一个DynamicRadarScene(源自QGraphicsScene):

QGraphicsView* view = new QGraphicsView;
view->setMinimumSize(800, 600);
DynamicRadarScene* _scene = new DynamicRadarScene(mode, channel_types, this);
view->setScene(_scene);

QGraphicsScene的坐标系是什么? (0,0)是从左上角? 如何在场景的右上角绘制一个项目(我已将其设置为800x600:view-> setMinimumSize(800,600);)? 如果我调整小部件的大小,所以我调整了QGraphicsView的大小,如何移动我之前绘制的项目以保留在左上角?

2 个答案:

答案 0 :(得分:1)

是的,左上角通常是图形场景中(0,0)的坐标。你需要考虑的是QGraphicsView就像一个看世界的窗口(QGraphicsScene)。您可以将视图设置为查看区域或场景,这可能是场景的全部或部分。

设置场景和视图后,您可以使用QGraphicsScene :: addItem等函数添加QGraphicsItems / QGraphicsObjects或从这些类派生的类的实例。这些项目位于场景中并自行绘制。

  

我(原文如此)调整小部件的大小,因此我调整了QGraphicsView的大小

您可以更改QGraphicsView的位置和尺寸,但场景中的项目将保留在场景中的相同位置。通常你会设置场景和视图,然后通常使用setPos函数移动/调整场景中的图形项/对象:QGraphicsItem :: setPos()。这将设置项目相对于其父项的位置。如果项目没有父项,则设置项目在场景中的位置。

答案 1 :(得分:1)

QGraphicsScene拥有财产sceneRect。如果未设置,则根据场景内容自动调整。这可以说明协调的起源在一些奇怪的地方,甚至是移动的。

设置此属性。另请参阅this