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)

相关推荐
十八度的天空1 小时前
第01节 Python的基础语法
开发语言·python
yue0081 小时前
C# 字符串倒序
开发语言·c#
强子感冒了2 小时前
Java学习笔记:String、StringBuilder与StringBuffer
java·开发语言·笔记·学习
低保和光头哪个先来2 小时前
场景6:对浏览器内核的理解
开发语言·前端·javascript·vue.js·前端框架
小北方城市网2 小时前
Python + 前后端全栈进阶课程(共 10 节|完整版递进式|从技术深化→项目落地→就业进阶,无缝衔接基础课)
大数据·开发语言·网络·python·数据库架构
程序员JerrySUN2 小时前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
阿里嘎多学长2 小时前
2025-12-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
郝学胜-神的一滴2 小时前
Linux进程与线程控制原语对比:双刃出鞘,各显锋芒
linux·服务器·开发语言·数据结构·c++·程序人生
小钟不想敲代码2 小时前
Python(一)
开发语言·python
ji_shuke2 小时前
canvas绘制拖拽箭头
开发语言·javascript·ecmascript