我正在尝试绘制正弦图的方法.
我的小部件只希望通过几个任意数据点传递.我必须将这些数据点拟合成正弦曲线:

到目前为止,我已经尝试了一些使用QPainterPath的方法.
经过一些谷歌搜索,我发现了几个使用Qwt进行曲线绘制的论坛帖子.如果我可以使用Qwt会很棒,但它不是一个选项,因为我只限于使用Qt.
有没有人有有用的反馈/建议?
我正在做一个非常类似的事情,绘制参数均衡器(带有多条扫描曲线的长线)的波特扫描.我正在做的方式(伪样式):
qreal yCoords[GRAPH_WIDTH];
...
QPainter Painter(this);
Painter.setRenderHint(QPainter::Antialiasing, true);
//Painter.setRenderHint(QPainter::HighQualityAntialiasing, true); //opengl specific
for(int xCoord = 0; xCoord < GRAPH_WIDTH; x++)
Path.lineTo(QPointF(xCoord, yCoord[xCoord]));
...
Painter.drawPath(Path);
Run Code Online (Sandbox Code Playgroud)
调用setRenderHint和绘制线的组合QPointF(即两个qreal)而不是QPoint(两个int)使得线条非常平滑.
我们在运行Ubuntu的SBC上使用它,并且为600x300px图形获得重绘时间(包括所有复杂的数学计算以获得第一位的点数)~80ms.初步测试显示,启用opengl渲染可将此时间减少到约8毫秒(显然处理器密集型任务是使用抗锯齿的绘画),所以如果你能做到这一点,我认为这个解决方案对你有用.