QtCharts小知识:如何把曲线显示到控件上
QtCharts在5.7免费之后,笔者开始尝试使用,以取代Qwt。但在初学使用时,想把曲线显示到MainWindon控件中,还是有些困扰,可能是Qwt用多了,潜意识并把QChart与QwtPlot对应。本文举例说明如何把QChart曲线显示到界面中的容器QWidget上。
·
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函数
更多推荐
已为社区贡献1条内容
所有评论(0)