QChart刷新

QChart相关内容(刷新,图例,绘制双曲线,自定义坐标系):

刷新的核心:

添加新的数据前,使用:

 chart->removeAllSeries();//清除即可, 重要操作,QChart刷新的必要操作

 

QChart创建完整创建过程:

 

             

第一部分数据预处理

将相关数据压入list中,数据类型为QPoint类型

第二部分添加数据

保存需要绘制曲线的Y值:

serial->append(list_2);//在serial中添加数据

QlineSeries可以设置曲线的名称:

serial->setName("Line 2");

第三部分核心部分,可以把这个部分看成是图表所有相关内容,属性的设置部分

QChart负责的部分,图例的设置,XY坐标,具体的数值,都需要添加到QCahrt对应的对象中

chart->addSeries(serial);//将数据加载到QChart中

第四部分简单理解成画布,将已经完成的图表进行展示

 注意:初始化的时候展示一次即可,后续的刷新部分,只需要对QCahrt中的相关内容进行设置即可

    QChartView *view=new QChartView(chart);//准备将chart进行显示
    //这个应该不用说的,消除锯齿
    view->setRenderHint(QPainter::Antialiasing);
    view->setFixedSize(600,600);

程序如下:

//Part1 在界面初始化的时候,就已经将QChart初始化了
void Widget::UiForEC()
{
    ......
    //此部分为QChart初始化

    //将一系列数据存入serial.
    //添加第一条线
    QList<QPointF>list;//将数据压入链表中

    QLineSeries *serial;//QChart的具体数据内容
    serial = new QLineSeries(this);//必须要new, 才能实现更新

    list<<QPointF(0,0)<<QPointF(Number_Size,0);//将数据压入链表中

    serial->setName("Line 1");//名称

    serial->append(list);//在serial中添加数据

    chart->addSeries(serial);//将数据加载到QChart中


    //添加第二条线
    //绘制 两条线的方式

    QList<QPointF>list_2;
    list_2<<QPointF(0,0)<<QPointF(Number_Size,Number_Size);
    serial = new QLineSeries(this);//需要赋予serial新的地址才有效,这也是在同一张绘制两条曲线的关键
    serial->append(list_2);//在serial中添加数据
    serial->setName("Line 2");
    chart->addSeries(serial);//将数据加载到QChart中


    //进行信号与槽的连接
    connectMarkers();

    chart->createDefaultAxes();//根据数据集,自动创建坐标轴,坐标轴的区间恰好完全容纳已有的数据集

    chart->setTitle("SAW");//chart名称
    chart->setAnimationOptions(QChart::SeriesAnimations);//以动画的形式显示
    chart->legend()->setVisible(true);//图例显示
    chart->legend()->setAlignment(Qt::AlignBottom);//(图例的位置)


    //最后需要将chart交给QChartView 
    QChartView *view=new QChartView(chart);//将chart进行显示
    
    view->setRenderHint(QPainter::Antialiasing);//消除锯齿
    view->setFixedSize(600,600);//chart大小

    ........
 
}
..........
//之后需要根据需求,对QChart进行重新绘制或者刷新
void Widget::PutItOnScreen(QList<double> * PIOS,int size,QList<double> * ERROR1,QList<double> * ERROR2)
{
    .......

    QList<QPointF> listForChartLINE1;
    QList<QPointF> listForChartLINE2;

    //添加数据
    for(int i = 0;i<Number_Size;i++)
    {
        listForChartLINE1.append(QPointF(i,ERROR1->at(i)));
        listForChartLINE2.append(QPointF(i,ERROR2->at(i)));
        qDebug()<<ERROR2->at(i);
    }

    QLineSeries *serial;
    //removeAllSeries是关键操作,只有这样,才能将之前的曲线完全剔除
    chart->removeAllSeries();//清除即可,重要操作,QChart刷新的必要操作

    //添加第一条线
    serial = new QLineSeries(this);//必须要new, 才能实现更新
    serial->append(listForChartLINE1);//在serial中添加数据
    serial->setName("Err");
//    chart->createDefaultAxes();
    chart->addSeries(serial);//将数据加载到QChart中

    //规定坐标系,注意,每次添加一条曲线,都需要进行坐标系的确定
    QValueAxis *axisX = new QValueAxis();//轴变量、数据系列变量,都不能声明为局部临时变量
    QValueAxis *axisY = new QValueAxis();//创建X/Y轴
    axisX->setRange(0, Number_Size);
//    axisY->setRange(MIN_D, MAX_D);//设置X/Y显示的区间Y_MINY_MAX
    axisY->setRange(Y_MIN, Y_MAX);//设置X/Y显示的区间

    chart->setAxisX(axisX);
    chart->setAxisY(axisY);//设置chart的坐标轴
    serial->attachAxis(axisY);

    //添加第二条线
    serial = new QLineSeries(this);
    serial->append(listForChartLINE2);//在serial中添加数据
    serial->setName("DeltaTheta");
//    chart->createDefaultAxes();
    chart->addSeries(serial);//将数据加载到QChart中

    axisX = new QValueAxis();//轴变量、数据系列变量,都不能声明为局部临时变量
    axisY = new QValueAxis();//创建X/Y轴
    axisX->setRange(0, Number_Size);
//    axisY->setRange(MIN_D, MAX_D);//设置X/Y显示的区间Y_MINY_MAX
    axisY->setRange(Y_MIN, Y_MAX);//设置X/Y显示的区间

    chart->setAxisX(axisX);
    chart->setAxisY(axisY);//设置chart的坐标轴
    serial->attachAxis(axisY);
//    serial
    //连接数据集与坐标轴。特别注意:如果不连接,那么坐标轴和数据集的尺度就不相同,显示


    //需要再次添加信号和槽
    connectMarkers();

    qDebug()<<"完成绘制";

}

提示:new之后,请根据实际情况释放程序员在堆区申请的空间,比如每次new后将地址压入一个list中,最终或者在合适的地方一次性释放掉。

  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
QChart是Qt框架中提供的一个绘图工具,它可以用来绘制各种类型的图表,包括波形图。绘制波形图通常需要准备好数据,并将数据传递给QChart来绘制曲线。 首先,需要创建一个QChart对象,并将其设置为绘图区域。可以使用QChartView来显示这个图表。然后,创建一个QLineSeries对象,并将数据添加到该系列中。可以通过调用addData函数来添加数据点,数据点顺序添加,即曲线的走向是按照数据点的添加顺序来绘制的。可以通过设置线条的颜色、线宽等属性,来调整曲线的样式。 接着,可以创建一个QChartAxis对象,并将其设置为X轴或Y轴。可以通过设置轴线的范围,以及刻度的间隔、格式等属性,来调整轴线的显示。可以通过调用setAxis函数,将轴线添加到图表中。 最后,将QLineSeries对象添加到QChart中,并在QChartView中显示。可以通过调用setRenderHint函数,设置绘制的抗锯齿效果。也可以通过调用setAnimationOptions函数,设置曲线绘制的动画效果。 通过上述步骤,就可以使用QChart绘制波形图。当数据发生变化时,只需要将新的数据添加到QLineSeries对象中,然后刷新图表即可。波形图常用于显示实时数据的变化趋势,因此这个过程可以在定时器或者其他事件触发的回调函数中进行,以达到实时更新图表的效果。 总结起来,使用QChart绘制波形图的主要步骤包括创建QChart对象、创建QLineSeries对象并添加数据、创建QChartAxis对象并设置轴线属性、将QLineSeries对象添加到QChart中、在QChartView中显示图表。这样就可以实现简单的波形图绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值