QGraphicsView和Qgraphicsscene坐标系

QGraphicsView and QGraphicsScene coordinate systems

本文关键字:坐标系 Qgraphicsscene QGraphicsView      更新时间:2023-10-16

在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的大小,那么如何移动我之前绘制的项目以保留在左上角?

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

设置了场景和视图后,您可以通过使用QgraphicsScene :: AddItem等函数来添加QgraphicSitems/QgraphicSitems/qgraphicsObjects或从这些函数衍生的类实例。这些项目位于场景中并绘制自己。

i(sic)调整小部件大小,因此我调整了qgraphicsview

您可以更改Qgraphicsview位置和尺寸,但是场景中的项目将保留在场景中的同一位置。通常,您通常会使用SETPOS函数:qgraphicsitem :: setPos()在场景中设置场景和查看,然后移动/调整图形项目/对象。这将项目的位置相对于其父母。如果项目没有父母,它将设置现场中的项目位置。

qgraphicsScene具有属性sceneRect。如果未设置,则根据场景内容进行自动调整。这可以使协调的起源在某个奇怪的地方,甚至是移动的。

设置此属性。另请参阅此。