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)

相关推荐
毕设源码-赖学姐7 分钟前
【开题答辩全过程】以 基于Java的医院器材管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
float_com15 分钟前
【java常用API】----- Arrays
java·开发语言
不会写DN1 小时前
PHP 中的文件读写与上传
android·开发语言·php
LuckyTHP1 小时前
迁移shibboleth java获取shibboleth用户信息
java·开发语言
客卿1232 小时前
数论===质数统计(暴力法,)
java·开发语言
Σίσυφος19002 小时前
C++ 多肽经典面试题
开发语言·c++·面试
csdn_aspnet2 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
qq_254674413 小时前
Docker 中的 镜像(
开发语言
码云社区3 小时前
JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP
java·开发语言·微信小程序·二手交易·闲置回收
crescent_悦3 小时前
C++:The Largest Generation
java·开发语言·c++