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 小时前
随笔一些用C#封装的控件
开发语言·c#
tianyuanwo1 小时前
Rust语言组件RPM包编译原理与Cargo工具详解
开发语言·网络·rust·rpm
ajassi20005 小时前
开源 C++ QT Widget 开发(十五)多媒体--音频播放
linux·c++·qt·开源
CodeCraft Studio5 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一5 小时前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
lingchen19067 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152878 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go8 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠8 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
翻滚丷大头鱼8 小时前
Java 集合Collection—List
java·开发语言