QtCharts在5.7免费之后,笔者开始尝试使用,以取代Qwt。但在初学使用时,想把曲线显示到MainWindon控件中,还是有些困扰,可能是Qwt用多了,潜意识并把QChart与QwtPlot对应。本文举例说明如何把QChart曲线显示到界面中的容器QWidget上。

QtCharts绘制曲线用到的几个类

类名描述
QChartView用于显示曲线
QChart相当于QwtPlot,图表框架
QSplineSeries相当于QwtPlotCurve,曲线,有多种类型

 
1. QSplineSeries用来加载一个坐标集,构成曲线的点集,所有设置或修改曲线的操作均在此类进行;
2. QChart创建一个图标框,有标题、坐标轴、图例等,通过addSeries加入QSplineSeries ,即可实现含曲线的图表;
3. QChartView 是一个容器,用来显示QChart 图表。

代码示例

1. 创建一个继承QChart的类MChar

using namespace QtCharts;

class MChart : public QChart
{
public:
    MChart();

private:
    QSplineSeries *series = new QSplineSeries();//创建一个曲线为私有变量,用于加载点集

public:
    void setCurve(double *xarr,double *yarr,int length); //便于操作,重写函数用于绘制图谱
};

2. 显示曲线

double simuXs[5],simuYs[5]; //创建模拟点集
for(int i=0;i<5;i++)
{
    simuXs[i]=i;
    simuYs[i]=0.8*i;
}
chart->setCurve(simuXs,simuYs,5);//加载点集,构成曲线(直线)

QChartView *chartView = new QChartView(chart);//声明QChartView 并创建实例,加载chart

QGridLayout *baseLayout = new QGridLayout(); //便于显示,创建网格布局

baseLayout->addWidget(chartView, 1, 0);
ui->widChart->setLayout(baseLayout); //显示到QWidget控件

这里写图片描述

3. 小结

  1. 把点集加载到QSplineSeries,QSplineSeries::append函数;
  2. 把QSplineSeries赋给QChart,QChart::addSeries函数;
  3. 把QChart给QChartView用于显示,QChartView构建函数,或QChartView::setChart函数
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐