Qt QChart 曲线图表操作

学习目标:QChart 曲线图表操作

学习内容

QT中的QChart类提供了一个功能强大的图表绘制框架,可以根据需求方便高效地绘制各种类型的图表,主要特点如下:

  1. 支持多种常见图表类型,如线图、条形图、饼图、散点图等各种类型。开发者只需要选择合适的图表类和数据即可绘制不同图表。

  2. 采用了MVC架构模式,QChart作为模型,使用QChartView作为视图进行图表渲染输出。开发者可以方便地在界面上添加和管理多个图表。

  3. 提供了丰富的图表元素类,支持设置图表标题、坐标轴、图例、数据标签等元素。可以灵活控制图表各区域元素。

  4. 支持多种动画效果,包括图表区域和数据点的淡入淡出效果,可自定义动画参数实现丰富的交互效果。

  5. 内置了常见的坐标轴类型,同时支持自定义坐标轴格式。开发者不需要关心坐标数值的转换计算工作。

  6. 使用起来接口清晰简洁,支持C++和QML两种开发模式,重用性很强。

  7. 性能也很好,绘制成千上万个数据点依然流畅快速。常用于数据量大的实时图表等场景。

总之,QChart提供了一套专业的图表绘制解决方案。对初学图表开发的同学来说,使用起来门槛较低,是一套不错的选择。对一些复杂图表也有很好的扩展能力支持。

使用之前需要在qmake.pro中加入

qmake.por文件加入
QT       += core gui
QT +=charts

实现项目

基于代码实现QChart 曲线程序

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //创建视图对象
    QChartView *chartview =new QChartView(this);
    setCentralWidget(chartview);
    //创建图表
    QChart* chart =new QChart();
    chart->setTitle("图标测试-sincos");
    chartview->setChart(chart);
    //创建曲线
    QLineSeries* s1=new QLineSeries;
    QLineSeries* s2=new QLineSeries;

    s1->setName("Sin");
    s2->setName("Cos");
    chart->addSeries(s1);
    chart->addSeries(s2);

    //赋值
    qreal t=0,y1,y2,iv=0.1;
    for (int i=0;i<100;i++) {
        y1=qSin(t);
        s1->append(t,y1);
        y2=qCos(t);
        s2->append(t,y2);

        t=t+iv;
    }


    //创建坐标轴
    QValueAxis* ax=new QValueAxis;
    ax->setRange(0,10);
    ax->setTitleText("times(secs)");
    QValueAxis* ay=new QValueAxis;
    ay->setRange(-2,2);
    ay->setTitleText("values");

    chart->setAxisX(ax,s1);
    chart->setAxisY(ay,s1);

    chart->setAxisX(ax,s2);
    chart->setAxisY(ay,s2);

}

MainWindow::~MainWindow()
{
    delete ui;
}

基于gui界面制作QChart 曲线程序

qmake.por文件加入
QT       += core gui
QT +=charts

选择GRaphicsView,右击选择提升

核心代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"




Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSplineSeries *s1=new QSplineSeries(); // 创建曲线对象

    s1->append(0,5);
    s1->append(1,3);
    s1->append(2,5);
    s1->append(3,9);
    s1->append(4,6);
    s1->append(5,16);
    s1->append(6,10);
    s1->append(7,12);
    s1->append(8,17);
    s1->append(9,19);

    QChart *ct=ui->chartview->chart();
    ct->legend()->hide(); // 隐藏图表比例
    ct->addSeries(s1);
    ct->setTitle("曲线图表标题--自定义");
    ct->createDefaultAxes();
    ct->axes(Qt::Vertical).first()->setRange(0,20); // 设置y轴的范围





}

Widget::~Widget()
{
    delete ui;
}

总结

总的来说, QChart 是 Qt Charts 模块中非常强大和灵活的图表组件,可以帮助开发者快速创建各种类型的图表,并提供丰富的定制选项。

最后附上源代码链接

对您有帮助的话,帮忙点个star

Qt demo: 学习qt过程 (gitee.com)

相关推荐
y25081 分钟前
《Object类》
java·开发语言
小技与小术5 分钟前
数据结构之树与二叉树
开发语言·数据结构·python
hccee27 分钟前
C# IO文件操作
开发语言·c#
hummhumm32 分钟前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
J老熊42 分钟前
JavaFX:简介、使用场景、常见问题及对比其他框架分析
java·开发语言·后端·面试·系统架构·软件工程
zmd-zk1 小时前
flink学习(2)——wordcount案例
大数据·开发语言·学习·flink
好奇的菜鸟1 小时前
Go语言中的引用类型:指针与传递机制
开发语言·后端·golang
Alive~o.01 小时前
Go语言进阶&依赖管理
开发语言·后端·golang
花海少爷1 小时前
第十章 JavaScript的应用课后习题
开发语言·javascript·ecmascript
手握风云-1 小时前
数据结构(Java版)第二期:包装类和泛型
java·开发语言·数据结构