【Qt】QChart折线图

2024-09-01 11:52
文章标签 qt 折线图 qchart

本文主要是介绍【Qt】QChart折线图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

Qt绘图(Qt Charts)基于Qt的Graphics View架构,其核心组件是QChartViewQChart

  • QChartView是显示图标的视图,基类为QGraphicsView
  • QChart的基类是QGraphicsltem
    可以看作是视图和数据分离,即ViewModel

QChartView

QChartView 是一个独立的小部件,继承于 QGraphicsView 类。它可以直接在用户界面中显示图表。这使得在应用程序中集成图表变得简单,而无需复杂的图形场景设置。

QChart

QChart是继承于QGraphicsWidget,可以在QGraphicsScene上显示,用来管理图表中的数据、图例、坐标轴等。

示例

// .h
#ifndef __WIDGET_H__
#define __WIDGET_H__#include <QtWidgets/QWidget>class Widget : public QWidget
{
public:Widget();~Widget();public:void createLineSeries(const std::pair<QString, std::vector<int>>& pair);private:class Impl;std::unique_ptr<Impl> impl_;
};#endif // __WIDGET_H__// .cpp
#include "Widget.h"#include <QtCharts/QLineSeries>
#include <QtCharts/QChartView>
#include <QtCharts/QChart>
#include <QtCharts/QValueAxis>#include <QVBoxLayout>#include <algorithm>
#include <vector>QT_CHARTS_USE_NAMESPACEclass Widget::Impl
{
public:Impl();~Impl() = default;public:QChart *chart_ = nullptr;
};Widget::Widget():QWidget(),impl_(std::make_unique<Impl>())
{setFixedSize(1700, 800);setWindowTitle(u8"亮度对比折线图");//创建图表框架QVBoxLayout *lay = new QVBoxLayout;setLayout(lay);impl_->chart_ = new QChart();impl_->chart_->legend()->setAlignment(Qt::AlignRight);QChartView *charView = new QChartView(this);charView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);charView->setChart(impl_->chart_);lay->addWidget(charView);
}Widget::~Widget()
{
}void Widget::createLineSeries(const std::pair<QString, std::vector<int>> &pair)
{QLineSeries *series = new QLineSeries();series->setName(pair.first);for (int i = 0, sz = pair.second.size(); i < sz; i++){series->append(i, pair.second[i]);}impl_->chart_->addSeries(series);//impl_->chart_->createDefaultAxes();QValueAxis *axisY = new QValueAxis;axisY->setRange(50, 200);axisY->setTitleText(u8"像素值");axisY->setLabelFormat("%i");impl_->chart_->addAxis(axisY, Qt::AlignLeft);QValueAxis *axisX = new QValueAxis;axisX->setRange(0, pair.second.size());axisX->setTitleText(u8"序号");axisX->setLabelFormat("%i");impl_->chart_->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);series->attachAxis(axisY);auto allAxisX = impl_->chart_->axes(Qt::Horizontal);auto allAxisY = impl_->chart_->axes(Qt::Vertical);for (const auto it : allAxisX){it->hide();}for (const auto it : allAxisY){it->hide();}(*allAxisX.begin())->show();(*allAxisY.begin())->show();update();
}Widget::Impl::Impl()
{
}

在这里插入图片描述

参考文章

  1. Qt(十三)QChart绘制折线图_qt折线图-CSDN博客
  2. C++ Qt开发:Charts折线图绘制详解_qt折线图-CSDN博客
  3. QT之QCharts的使用(绘制折线图)_qt qcharts折线图-CSDN博客
  4. 学习Qt Charts-创建一个简单的折线图 - 哈拎 - 博客园 (cnblogs.com)
  5. Qt类 | QChartView类详解-CSDN博客

这篇关于【Qt】QChart折线图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126865

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对