QT Graph绘图,如何更改QGraphicsView的坐标系/几何

Ama*_*ann 3 c++ qt graph graphics2d

我正在使用QT并尝试使用QGraphicsView和QGraphicsScene来绘制图形.我不想要任何其他依赖项,这就是为什么我不使用QWT.当我绘制我的数据时,在我使用的那一刻

scene->drawLine(x1,y1,x2,y2,pen);
Run Code Online (Sandbox Code Playgroud)

然后,这将在QGraphicScene中的2个点之间划一条线.但这使用左上角x = 0 y = 0系统...我想使用我自己的系统,如下图所示.另一个问题是我有从-3到+ 3的双倍值.有任何人对QGraphicScene和QGraphicsView有一些经验并且可以告诉我如何才能实现这一目标?

在此输入图像描述

Tay*_*ter 6

尝试查看QGraphicsView :: setTransform.该矩阵定义了如何将"场景坐标"转换为"视图坐标",这是图形编程中的常见概念.

还有便利函数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);
Run Code Online (Sandbox Code Playgroud)

由于这取决于窗口小部件的大小,您还需要捕获任何调整大小事件并在那里再次重置转换矩阵.假设您希望"3"表示视口的顶部,"-3"表示底部.