Qcharts之曲线图

1.曲线图简介

在Qt中,为用户提供了Qcharts模块,以前这个模块是收费使用的,现在已经免费了,这大大方便了我们使用图表表现数据,记得在之前,用户使用图表还要借助第三方。
在charts模块中,可以使用的图表包括很多类型,包括曲线图、柱状图、饼状图、点状图等等,就我而言,我觉得前三种在我的工作当中已经足够了,今天研究了一下曲线图,为了防止以后可能会忘记,所以先总结一下,后续会涉及到柱状及饼状图的使用。

2.代码片段

QT       += core gui   //要使用charts模块,先要在.pro加入该模块

 "mChart=new QChart();"       //创建图表
    //    mSeries=new QSplineSeries(this);  //曲线
    "mSeries=new QLineSeries(this);"   //直线
    QPen pen;
    pen.setColor(Qt::red);
    pen.setWidth(5);

    "mSeries->setPen(pen);" //画笔,可以设置曲线颜色及宽度
    "mChart->addSeries(mSeries);"//曲线和图表之前是没关系的,在这里相当于将他们联系起来
    //    mChart->createDefaultAxes(); 
    mChart->setTitle(tr("实验结果数据"));
    mChart->legend()->hide();  
    mChart->setAnimationOptions(QChart::SeriesAnimations);

#if 0
    "mChart->createDefaultAxes();"//创建默认的坐标轴,如果自己不想使用默认的,那么下面的是自定义横纵坐标轴
#else
    "mAxis=new QDateTimeAxis;"  //在这里我创建了一个时间坐标轴作为横坐标轴
    "mAyis=new QValueAxis;"
    QDateTime currentdatetime=QDateTime::currentDateTime();
    //    QTime currenttime=currentdatetime.time();
    mAxis->setRange(currentdatetime,currentdatetime.addSecs(180));
    //    mAxis->setTickCount(7);
    //    axisX->setFormat("yyyy-MM-dd hh:mm:ss");
   " mAxis->setFormat("hh:mm:ss");" //设置时间格式,如果不想显示年月日那么就设置以下格式吧,只有时间
    mAxis->setTitleText(tr("时间"));

    mAyis->setTickCount(8); //会划分成几个单位
    mAyis->setRange(3,16);

    "mChart->addAxis(mAxis,Qt::AlignBottom);//bottom注定了他就是横坐标轴,下面的left当然就是纵坐标了,当然如果感兴趣的话不妨试试其他效果
   " mSeries->attachAxis(mAxis);" //上面的是把坐标轴与图表联系起来,这里就是把曲线和坐标轴联系起来
    mChart->addAxis(mAyis,Qt::AlignLeft);
    mSeries->attachAxis(mAyis);"
#endif

 "mView=new QChartView(mChart,this);" //建立图表的视图,必不可少,就当他是个widget
QGridLayout *layout=new QGridLayout(this);
    layout->addWidget(mView);   

 QDateTime currentdatetime=QDateTime::currentDateTime();
  "  mSeries->append(currentdatetime.toMSecsSinceEpoch(),i++);" //显示数据,这里因为只接受qrel,说白了就是double类型,所以datetime类型肯定要转化下

3.总结

图表还是挺好玩的,这里介绍了创建一个图表所必须的一些工序,至于其他的一些实现,例如保持一个动态坐标轴,实现历史数据显示,相对而言,就比较简单了!这里不做介绍。

4.补充

QT_CHARTS_USE_NAMESPACE 指定命名空间,这篇博客总结好久了,但是最近用起来老是碰到一点问题,最后才发现是这个命名空间未指定,不知道大家碰到过没有!

你可能感兴趣的:(Qt)