Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例
首先要了解QChartView、QChart、QLineSeries、QValueAxis的实体之间的关系,例如一个QChartView中可以包含几个QValueAxis?这些可参考Qt图形图像开发曲线图表模块QChart库基本用法、各个类之间的关系说明
每个chart可以包含多个QLineSeries数据系列,每个QLineSeries数据系列又包含了2个QValueAxis数值轴或QDateTimeAxis时间轴。
那么这个chart中的多个数据系列,一起显示在同一个chart中,会是什么情形?
新建ui工程,并添加MainWindow私有变量:
#ifndefMAINWINDOW_H #defineMAINWINDOW_H #include#include #include #include #include QT_CHARTS_USE_NAMESPACE namespaceUi{ classMainWindow; } classMainWindow:publicQMainWindow { Q_OBJECT public: explicitMainWindow(QWidget*parent=0); ~MainWindow(); private: Ui::MainWindow*ui; QChart*chart;//非必要(QCharView实体中自带一个QChart实体) QLineSeries*series_sin,*series_cos; QValueAxis*axis_x_sin,*axis_y_sin,*axis_x_cos,*axis_y_cos; }; #endif//MAINWINDOW_H
MainWindow::MainWindow(QWidget*parent): QMainWindow(parent), ui(newUi::MainWindow), chart(newQChart),//或者不用new,直接指向ui->graphicsView->chart()也行 series_sin(newQLineSeries),//sin曲线的数据点 series_cos(newQLineSeries),//cos曲线的数据点 axis_x_sin(newQValueAxis),//sin的X轴 axis_y_sin(newQValueAxis),//sin的Y轴 axis_x_cos(newQValueAxis),//cos的X轴 axis_y_cos(newQValueAxis)//cos的Y轴 { ui->setupUi(this); ui->graphicsView->setChart(chart);//view中显示出chart for(floatx=0;x<10;x+=0.1) { series_sin->append(x,sin(x)); } axis_x_sin->setRange(-5,25); axis_y_sin->setRange(-2,2); chart->addSeries(series_sin); /*功能是:添加轴,并把轴和数据系列连接。注意,这一行并不能用来给chart添加数据系列 添加数据系列,要用chart->addSeries*/ chart->setAxisX(axis_x_sin,series_sin); chart->setAxisY(axis_y_sin,series_sin); for(floatx=10;x<20;x+=0.1) { series_cos->append(x,cos(x)); } axis_x_cos->setRange(5,25); axis_y_cos->setRange(-2,2); chart->addSeries(series_cos); chart->setAxisX(axis_x_cos,series_cos);//cos使用自己的X轴 chart->setAxisY(axis_y_cos,series_cos); //chart->setAxisX(axis_x_sin,series_cos);//cos共享sin曲线的X轴 //chart->setAxisY(axis_y_sin,series_cos); }
运行结果如下所示,我们发现,两条曲线各自为政。
根据上面程序最后两行的注释,我们如果把这两个QLineSeries数据系列,绑定到同一组XY轴上(也即,两条曲线共享同一组XY轴),两条曲线就能“真正”的显示在同一个chart中了,如下所示。
本文介绍了Qt曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例,更多关于Qt曲线图表模块QChart库知识请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。