Qt5.8.0使用QChart的问题

2023-05-16

Qt Charts 的横空出世标识着 QWT、QCustomPlot …… 时代的终结,是时候向他们做一个简单的告别了。Qt Charts - 强大并极具吸引力,从现在开始,让我们顺势拥抱灿烂的明天 。——引自:一去丶二三里

最近在用Qt5.8.0下QChart绘图,绘图的界面简洁,绘出的图形比较现代化。在实际使用中碰到两个问题,在这里做个备忘录。

  1. 在5.8.0下,QChart长时间绘图,越用越慢,越来越卡,内部程序有BUG:内存泄露
  2. QChart新增数据点的方式,使用replace比append更高效。

1.内存泄露问题


使用的例子是Qt自带的dynamicspline例子。

下图是程序刚开始运行时,刷新一次图像,耗时3ms,还是比较快的。
程序刚开始运行时

运行了大概5分钟后,程序刷新一次时间已经变成55ms,界面已经开始有点卡顿。
这里写图片描述

之前在这个问题上卡了很久,一直以为是我代码哪里写得有问题,但是把能想到的解决方法都试了一遍后,问题还是存在。就开始上网去查资料。

这个是重点:
在Qt的bugreports里找到这个帖子:QCharts Memory Leak,描述的问题是QXYSeries 中使用append加入了数据点,再调用remove的时候,数据点并没有被释放,导致了内存泄露的问题。后面换到了5.9以上的版本就好了。

2.QChart新增数据点的方式


在QXYSeries类的replace函数中有说到,他们对点替换的这个函数做了优化,比常规的一个个替换点的方式更快。这个在Qt自带的例子(如下)有提及。

OpenGL Accelerated Series Example

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt5.8.0使用QChart的问题 的相关文章

随机推荐