服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

2021-08-24 14:09610642 C/C++

这篇文章主要介绍了Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例,需要的朋友可以参考下

首先要了解QChartView、QChart、QLineSeries、QValueAxis的实体之间的关系,例如一个QChartView中可以包含几个QValueAxis?这些可参考 Qt图形图像开发曲线图表模块QChart库基本用法、各个类之间的关系说明

每个chart可以包含多个QLineSeries数据系列,每个QLineSeries数据系列又包含了2个QValueAxis数值轴或QDateTimeAxis时间轴。

那么这个chart中的多个数据系列,一起显示在同一个chart中,会是什么情形?

新建ui工程,并添加MainWindow私有变量:

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <QMainWindow>
  5. #include <QChartView>
  6. #include <QChart>
  7. #include <QLineSeries>
  8. #include <QValueAxis>
  9.  
  10. QT_CHARTS_USE_NAMESPACE
  11.  
  12. namespace Ui {
  13. class MainWindow;
  14. }
  15.  
  16. class MainWindow : public QMainWindow
  17. {
  18. Q_OBJECT
  19.  
  20. public:
  21. explicit MainWindow(QWidget *parent = 0);
  22. ~MainWindow();
  23.  
  24. private:
  25. Ui::MainWindow *ui;
  26. QChart *chart;//非必要(QCharView实体中自带一个QChart实体)
  27. QLineSeries *series_sin, *series_cos;
  28. QValueAxis *axis_x_sin, *axis_y_sin, *axis_x_cos, *axis_y_cos;
  29. };
  30.  
  31. #endif // MAINWINDOW_H
  1. MainWindow::MainWindow(QWidget *parent) :
  2. QMainWindow(parent),
  3. ui(new Ui::MainWindow),
  4. chart(new QChart),//或者不用new,直接指向ui->graphicsView->chart()也行
  5. series_sin(new QLineSeries),//sin曲线的数据点
  6. series_cos(new QLineSeries),//cos曲线的数据点
  7. axis_x_sin(new QValueAxis),//sin的X轴
  8. axis_y_sin(new QValueAxis),//sin的Y轴
  9. axis_x_cos(new QValueAxis),//cos的X轴
  10. axis_y_cos(new QValueAxis)//cos的Y轴
  11. {
  12. ui->setupUi(this);
  13. ui->graphicsView->setChart(chart);//view中显示出chart
  14.  
  15. for(float x = 0; x < 10; x += 0.1)
  16. {
  17. series_sin->append(x, sin(x));
  18. }
  19. axis_x_sin->setRange(-5,25);
  20. axis_y_sin->setRange(-2,2);
  21. chart->addSeries(series_sin);
  22. /*功能是:添加轴,并把轴和数据系列连接。注意,这一行并不能用来给chart添加数据系列
  23. 添加数据系列,要用chart->addSeries*/
  24. chart->setAxisX(axis_x_sin, series_sin);
  25. chart->setAxisY(axis_y_sin, series_sin);
  26.  
  27. for(float x = 10; x < 20; x += 0.1)
  28. {
  29. series_cos->append(x, cos(x));
  30. }
  31.  
  32. axis_x_cos->setRange(5,25);
  33. axis_y_cos->setRange(-2,2);
  34. chart->addSeries(series_cos);
  35. chart->setAxisX(axis_x_cos, series_cos);//cos使用自己的X轴
  36. chart->setAxisY(axis_y_cos, series_cos);
  37. // chart->setAxisX(axis_x_sin, series_cos);//cos共享sin曲线的X轴
  38. // chart->setAxisY(axis_y_sin, series_cos);
  39. }

运行结果如下所示,我们发现,两条曲线各自为政。

Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

根据上面程序最后两行的注释,我们如果把这两个QLineSeries数据系列,绑定到同一组XY轴上(也即,两条曲线共享同一组XY轴),两条曲线就能“真正”的显示在同一个chart中了,如下所示。

Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

本文介绍了Qt曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例,更多关于Qt曲线图表模块QChart库知识请查看下面的相关链接

原文链接:https://blog.csdn.net/qq_31073871/article/details/83032884

延伸 · 阅读

精彩推荐