当前位置: 首页 > article >正文

QT中使用图表之QChart绘制曲线图

步骤和绘制折线图一模一样,只不过使用的系列是曲线系列QSplineSeries

不过我们也可以不用自己来创建轴

而是先把曲线系列创建好并添加到图表中之后

---------------------------------------------------------------------------------------------------------------------------------

调用图表的createDefaultAxes()创建默认的坐标轴

他会根据图表中添加的系列创建不同的轴:(曲线系列属于QXYSeries)

---------------------------------------------------------------------------------------------------------------------------------

然后获取坐标轴,对坐标轴进行各种属性设置

将坐标轴附加到系列中

---------------------------------------------------------------------------------------------------------------------------------

详细步骤如下:

1、创建图表视图

QChartView* view=new QChartView(this);

2、创建图表

QChartView* view=new QChartView(this);

3、将图表设置给图表视图

view->setChart(chart);

 4、设置标题和图例的一些属性(可选)

chart -> setTitle("折线图");
chart -> legend() -> show(); //显示和隐藏图例(默认显示)
chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示

5、创建曲线系列,给系列添加点,并将系列添加到图表中去

//添加曲线系列
QSplineSeries * spline = new QSplineSeries(this);
spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色
spline -> setName("曲线系列"); //设置图例的名称
//给曲线系列添加点
spline -> append(0, 1200);
spline -> append(20, 1800);
spline -> append(30, 1400);
spline -> append(40, 1900);
spline -> append(60, 1300);
//把系列添加到QChart中
chart -> addSeries(spline);

6、创建默认的坐标轴(必须要在addSeries之后才能调用

//添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用
chart->createDefaultAxes();

7、获取x轴 ,并设置相关属性

//获取x轴,就是水平的那一条轴,并设置一些属性
auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);
axisX -> setRange(0, 100); //设置范围
axisX -> setTickCount(11);

8、 获取y轴 ,并设置相关属性

//获取y轴,就竖直的那一条轴,并设置一些属性
auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);
axisY -> setRange(1000, 2000); //设置范围
axisY -> setTickCount(11);

9、将轴附加到系列

//把轴附加到系列
spline->attachAxis(axisX);
spline->attachAxis(axisY);

完整代码如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

#include<QtCharts>

#include<QHBoxLayout>

class Widget: public QWidget {
    Q_OBJECT

    public:
        Widget(QWidget * parent = nullptr): QWidget(parent) {
            resize(800, 600);
            QHBoxLayout * h_box = new QHBoxLayout(this);
            DrawSpLineSeries();

        }
        ~Widget() =
        default;



    //画曲线
    void DrawSpLineSeries() {
        //1、创建视图
        QChartView * view = new QChartView(this);

        this -> layout() -> addWidget(view);

        //2.创建图表
        QChart * chart = new QChart();

        //将图表设置给图表视图
        view -> setChart(chart);

        //设置标题
        chart -> setTitle("折线图");
        chart -> legend() -> show(); //显示和隐藏图例(默认显示)
        chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示


        //添加曲线系列
        QSplineSeries * spline = new QSplineSeries(this);
        spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色
        spline -> setName("曲线系列"); //设置图例的名称
        //给曲线系列添加点
        spline -> append(0, 1200);
        spline -> append(20, 1800);
        spline -> append(30, 1400);
        spline -> append(40, 1900);
        spline -> append(60, 1300);
        //把系列添加到QChart中
        chart -> addSeries(spline);

        //添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用
        chart -> createDefaultAxes();

        //获取x轴,就是水平的那一条轴,并设置一些属性
        auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);
        axisX -> setRange(0, 100); //设置范围
        axisX -> setTickCount(11);


        //获取y轴,就竖直的那一条轴,并设置一些属性
        auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);
        axisY -> setRange(1000, 2000); //设置范围
        axisY -> setTickCount(11);

        //把轴附加到系列
        spline -> attachAxis(axisX);
        spline -> attachAxis(axisY);

    }
};
#endif // WIDGET_H

 

 

 


http://www.kler.cn/a/370691.html

相关文章:

  • v2富文本框封装 @wangeditor/editor-for-vue
  • MQ消息队列
  • 服务器迁移MySQL
  • 初学stm32 --- flash模仿eeprom
  • HTML5+Canvas实现的鼠标跟随自定义发光线条源码
  • git命令
  • mybatis常见的标签有哪些?
  • Redis 持久化 总结
  • 面对复杂的软件需求:5大关键策略!
  • 无人机动态窗口路径规划算法!
  • C++ Qt面试题 | 精选25题
  • 字节回应实习生破坏AI模型训练
  • golang linux快速启动 一键重启脚本
  • 跟着小土堆学习pytorch(二)——TensorBoard和Transform
  • C语言——数组、指针、函数
  • 外媒软文宣发:海外发稿-英国金融时报FT-大舍传媒
  • 总结性标题:高效导入文本数据,探索 MySQL 与 Java 的最佳实践
  • 【矩阵理论常见符号说明】
  • echarts自适应浏览器缩放代码
  • Redis与MySQL双写一致性的缓存模式
  • LeetCode 热题 100 之链表2
  • 三款计算服务器配置→如何选择科学计算服务器?
  • C++第八讲:STL--stack和queue的使用及模拟实现
  • 基于现代 C++17 的模块化视频质量诊断处理流程设计
  • Python入门:学会Python装饰器让你的代码如虎添翼!(Python如何不改动原有函数代码添加一些额外的功能)
  • 嵌入式linux系统中实现MPU6050的控制方法