您的位置:首页 > 编程语言 > Qt开发

QtCharts小知识:如何把曲线显示到控件上

2017-08-28 09:34 1561 查看
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. 小结

把点集加载到QSplineSeries,QSplineSeries::append函数;

把QSplineSeries赋给QChart,QChart::addSeries函数;

把QChart给QChartView用于显示,QChartView构建函数,或QChartView::setChart函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息