C++ QT图形打印,如何更改QGraphicsView的坐标系/几何图形

C++ QT图形打印,如何更改QGraphicsView的坐标系/几何图形,c++,qt,graph,graphics2d,C++,Qt,Graph,Graphics2d,我正在使用QT,并尝试用QGraphicsView和qgraphicscene绘制一个图。我不想要任何额外的依赖项,这就是我不使用QWT的原因。当我绘制数据时,我使用 scene->drawLine(x1,y1,x2,y2,pen); 然后在QGraphics场景中的两个点之间绘制一条线。但这使用了左上角的x=0y=0系统。。。我想使用我自己的系统,如下图所示。另一个问题是我有从-3到+3的两个值。有没有人对QGraphicsView和QGraphicsView有一些经验,可以告诉我如何

我正在使用QT,并尝试用QGraphicsView和qgraphicscene绘制一个图。我不想要任何额外的依赖项,这就是我不使用QWT的原因。当我绘制数据时,我使用

scene->drawLine(x1,y1,x2,y2,pen);
然后在QGraphics场景中的两个点之间绘制一条线。但这使用了左上角的x=0y=0系统。。。我想使用我自己的系统,如下图所示。另一个问题是我有从-3到+3的两个值。有没有人对QGraphicsView和QGraphicsView有一些经验,可以告诉我如何做到这一点

试着查看一下。该矩阵定义了如何将“场景坐标”转换为“视图坐标”,这是图形编程中的常见概念

还有一些方便的函数scale()、rotate()、translate()和shear(),它们修改视图的当前变换矩阵

所以你可以这样做:

scale(1.0, -1.0); // invert Y axis

// translate to account for fact that Y coordinates start at -3
translate(0.0, 3.0); 

// scale Y coordinates to height of widget
scale(1.0, (qreal)viewport()->size().height()/6.0);
因为这取决于小部件的大小,所以您还需要捕获任何调整大小的事件,并在那里重新设置转换矩阵。假设希望“3”表示视口的顶部,-3”表示视口的底部