我现在要做的工作将串口获取的数据通过波形的形式显示在显示屏上,目前我是用paintEvent实现的,但我们知道QPainter在每次update的时候都是会重新绘制的,所以每次只能显示一组数据,等下一组数据过来的时候就会清空上一组数据绘制的波形,现在我想保留之前绘制的波形,达到绘制重叠波形的效果,不知道如何实现?还请大神帮助。
------解决方案--------------------
我也做过这个功能,开始使用QVector把所有的波形数据储存起来,但数据一多,也不省内存, 再全部绘制一遍, 效率似乎也不高;
然后就是在界面类定义一个成员变量QImage *image;(我的图片要求不高, 400*300, 16bit的就够了, 有64M内存)
在接收一批波形数据的函数里:
QPainter painter(image);
//绘制
painter.end();
在界面的paintEvent函数里面:
QPainter painter(this);
painter.drawImage(0, 0, *image);
painter.end();