1、工程配置:
需要在 .pro文件中加入
QT += charts
2、声明作用域
(类似 using namespace std), 否则无法正常使用其中的方法
QT_CHARTS_BEGIN_NAMESPACE
class QChart;
QT_CHARTS_END_NAMESPACE
QT_CHARTS_USE_NAMESPACE
3、获得Python返回的list,并转换为QT可用的数组
PyObject* pylist=PyObject_CallFunction(pFun,NULL); // pylist从python中获得的list的返回值,需进行转换
int length=PyObject_Size(pylist);
int signal_item;
PyObject *list_item = NULL;
for(int i=0;i<length;++i)
{
list_item = PyList_GetItem(pylist, i);
signal_item=PyLong_AsLong(list_item);
series->append(i,signal_item); // 获得每一个转换后的返回值并进行append
}
4、设置chart
axis=new QValueAxis;
series = new QSplineSeries();
chart = new QChart();
chart->addSeries(series); // 后续如果想修改原来的series直接append就行了,图表会自动更新
chart->legend()->hide();
chart->createDefaultAxes();
chart->setAxisX(axis,series); //设置坐标必须在createDefaultAxes方法之后
chart->axisX()->setRange(0,100);
chart->axisY()->setRange(-100,100);
chart->setAnimationOptions(QChart::AllAnimations); //动态画图
chart->setTitle("Simple line chart example");
5、需要进行改进的地方及记录
(1)x 轴的坐标最大可以设置上百亿,不用担心坐标不够用的问题
(3)可以启动OpenGL加速图表的绘制
(4)当数据量大的时候关闭动态绘图,会节省很多的资源,绘图会快很多
(5)每次添加新数据的时候,尽量使用replace代替append,replace在官方文档里也有说明,比append要快很多,append添加2048就得大概一秒,而replace添加10000个点连续进行绘制显示都没什么问题。避免此坑
https://blog.csdn.net/weixin_41712355/article/details/82217607
https://blog.csdn.net/baidu_28572705/article/details/82423680