当前位置: 首页 > news >正文

QCustomPlot 绘制卡顿问题

大数据量导致曲线绘制卡顿问题
这里提供一个思路在跟踪源码中发现底层卡顿在vector的resize() 此处扩容中

所以尽量使用下面的接口

/*! \overloadAdds the provided data point as \a key and \a value to the current data.Alternatively, you can also access and modify the data directly via the \ref data method, whichreturns a pointer to the internal data container.
*/
void QCPGraph::addData(double key, double value)
{mDataContainer->add(QCPGraphData(key, value));
}

而不是使用addData这个接口,还有setData这个接口

/*! \overloadAdds the provided points in \a keys and \a values to the current data. The provided vectorsshould have equal length. Else, the number of added points will be the size of the smallestvector.If you can guarantee that the passed data points are sorted by \a keys in ascending order, youcan set \a alreadySorted to true, to improve performance by saving a sorting run.Alternatively, you can also access and modify the data directly via the \ref data method, whichreturns a pointer to the internal data container.
*/
void QCPGraph::addData(const QVector<double> &keys, const QVector<double> &values, bool alreadySorted)
{if (keys.size() != values.size())qDebug() << Q_FUNC_INFO << "keys and values have different sizes:" << keys.size() << values.size();const int n = qMin(keys.size(), values.size());QVector<QCPGraphData> tempData(n);QVector<QCPGraphData>::iterator it = tempData.begin();const QVector<QCPGraphData>::iterator itEnd = tempData.end();int i = 0;while (it != itEnd){it->key = keys[i];it->value = values[i];++it;++i;}mDataContainer->add(tempData, alreadySorted); // don't modify tempData beyond this to prevent copy on write
}
http://www.lryc.cn/news/145493.html

相关文章:

  • uni-app开发小程序,radio单选按钮,点击可以选中,再次点击可以取消
  • 【Qt专栏】实现单例程序,禁止程序多开的几种方式
  • 力扣26. 删除有序数组中的重复项
  • 【机器学习】鸢尾花分类-逻辑回归示例
  • Flink CDC介绍
  • Java集合sort排序报错UnsupportedOperationException处理
  • 安防监控/磁盘阵列存储/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?
  • Spring boot开启定时任务
  • package.json相关知识记录
  • VueRouter使用详解(5000字通关大全)
  • vue axios实现下载文件及responseType:blob注意事项
  • StringBuilder类分享(1)
  • Qt 打开文件列表选择文件,实现拖拽方式打开文件
  • [C/C++]天天酷跑游戏超详细教程-上篇
  • 5G NR:RACH流程 -- Msg1之选择正确的PRACH时频资源
  • 在vue3项目中编辑的时候,解决对话框里边的数据和列表中的数据联动了。深复制
  • 循环结构(个人学习笔记黑马学习)
  • ceph中PGLog处理流程
  • macOS使用命令行连接Oracle(SQL*Plus)
  • Mac下使用Homebrew安装MySQL5.7
  • centos安装Nginx配置Nginx
  • Linux环境下搭建使用缓存中间件Redis
  • Oracle 本地客户端连接远程 Oracle 服务端并使用 c# 连接测试
  • java中上传文件先下载到本地再上传还有就是直接通过文件流url地址进行上传优缺点?
  • 华为复合vlan(mux vlan)
  • 第62步 深度学习图像识别:多分类建模(Pytorch)
  • GPT带我学-设计模式-适配器模式
  • Pyecharts教程(七):使用pyecharts创建堆叠柱状图的示例
  • C++中的强制转换的常用类型及应用场景详解
  • ubuntu调整时区