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)

相关推荐
Mr_Xuhhh16 小时前
YAML相关
开发语言·python
咖啡の猫16 小时前
Python中的变量与数据类型
开发语言·python
前端达人16 小时前
你的App消息推送为什么石沉大海?看Service Worker源码我终于懂了
java·开发语言
汤姆yu16 小时前
基于springboot的电子政务服务管理系统
开发语言·python
全栈师16 小时前
C#中控制权限的逻辑写法
开发语言·c#
S***q19216 小时前
Rust在系统工具中的内存安全给代码上了三道保险锁。但正是这种“编译期的严苛”,换来了运行时的安心。比如这段代码:
开发语言·后端·rust
打点计时器17 小时前
matlab 解决wfdb工具使用本地数据集报错
开发语言·matlab
zmzb010317 小时前
C++课后习题训练记录Day38
开发语言·c++
夏霞17 小时前
c# 使用vs code 创建.net8.0以及.net6.0 webApi项目的教程
开发语言·c#·.net
T***u33317 小时前
Rust在Web中的 Web框架
开发语言·后端·rust