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

所属分类: 软件编程 / C 语言 阅读数: 122
收藏 0 赞 0 分享

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

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

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

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

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QChartView>
#include <QChart>
#include <QLineSeries>
#include <QValueAxis>
 
QT_CHARTS_USE_NAMESPACE
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
 Q_OBJECT
 
public:
 explicit MainWindow(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(new Ui::MainWindow),
 chart(new QChart),//或者不用new,直接指向ui->graphicsView->chart()也行
 series_sin(new QLineSeries),//sin曲线的数据点
 series_cos(new QLineSeries),//cos曲线的数据点
 axis_x_sin(new QValueAxis),//sin的X轴
 axis_y_sin(new QValueAxis),//sin的Y轴
 axis_x_cos(new QValueAxis),//cos的X轴
 axis_y_cos(new QValueAxis)//cos的Y轴
{
 ui->setupUi(this);
 ui->graphicsView->setChart(chart);//view中显示出chart
 
 for(float x = 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(float x = 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库知识请查看下面的相关链接

更多精彩内容其他人还在看

用标准c++实现string与各种类型之间的转换

这个类在头文件中定义, < sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本
收藏 0 赞 0 分享

C++如何通过ostringstream实现任意类型转string

再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便。后来去网上找了一下,发现有一个好方法
收藏 0 赞 0 分享

C/C++指针小结

要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区
收藏 0 赞 0 分享

C++ 类的静态成员深入解析

在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个实例来加深印象
收藏 0 赞 0 分享

C++类的静态成员初始化详细讲解

通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化
收藏 0 赞 0 分享

C++类静态成员与类静态成员函数详解

静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值
收藏 0 赞 0 分享

C++中的friend友元函数详细解析

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样
收藏 0 赞 0 分享

static全局变量与普通的全局变量的区别详细解析

以下是对static全局变量与普通的全局变量的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

C++ explicit关键字的应用方法详细讲解

C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?下面就让我们一起来看看这方面的知识吧
收藏 0 赞 0 分享

教你5分钟轻松搞定内存字节对齐

随便google一下,人家就可以跟你解释的,一大堆的道理,我们没怎么多时间,讨论为何要对齐.直入主题,怎么判断内存对齐规则,sizeof的结果怎么来的,请牢记以下3条原则
收藏 0 赞 0 分享
查看更多