QT中使用图表之QChart绘制曲线图

ops/2024/10/30 12:31:30/

步骤和绘制折线图一模一样,只不过使用的系列是曲线系列QSplineSeries

不过我们也可以不用自己来创建轴

而是先把曲线系列创建好并添加到图表中之后

---------------------------------------------------------------------------------------------------------------------------------

调用图表的createDefaultAxes()创建默认的坐标轴

他会根据图表中添加的系列创建不同的轴:(曲线系列属于QXYSeries)

---------------------------------------------------------------------------------------------------------------------------------

然后获取坐标轴,对坐标轴进行各种属性设置

将坐标轴附加到系列中

---------------------------------------------------------------------------------------------------------------------------------

详细步骤如下:

1、创建图表视图

QChartView* view=new QChartView(this);

2、创建图表

QChartView* view=new QChartView(this);

3、将图表设置给图表视图

view->setChart(chart);

 4、设置标题和图例的一些属性(可选)

chart -> setTitle("折线图");
chart -> legend() -> show(); //显示和隐藏图例(默认显示)
chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示

5、创建曲线系列,给系列添加点,并将系列添加到图表中去

//添加曲线系列
QSplineSeries * spline = new QSplineSeries(this);
spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色
spline -> setName("曲线系列"); //设置图例的名称
//给曲线系列添加点
spline -> append(0, 1200);
spline -> append(20, 1800);
spline -> append(30, 1400);
spline -> append(40, 1900);
spline -> append(60, 1300);
//把系列添加到QChart中
chart -> addSeries(spline);

6、创建默认的坐标轴(必须要在addSeries之后才能调用

//添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用
chart->createDefaultAxes();

7、获取x轴 ,并设置相关属性

//获取x轴,就是水平的那一条轴,并设置一些属性
auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);
axisX -> setRange(0, 100); //设置范围
axisX -> setTickCount(11);

8、 获取y轴 ,并设置相关属性

//获取y轴,就竖直的那一条轴,并设置一些属性
auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);
axisY -> setRange(1000, 2000); //设置范围
axisY -> setTickCount(11);

9、将轴附加到系列

//把轴附加到系列
spline->attachAxis(axisX);
spline->attachAxis(axisY);

完整代码如下:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>#include<QtCharts>#include<QHBoxLayout>class Widget: public QWidget {Q_OBJECTpublic:Widget(QWidget * parent = nullptr): QWidget(parent) {resize(800, 600);QHBoxLayout * h_box = new QHBoxLayout(this);DrawSpLineSeries();}~Widget() =default;//画曲线void DrawSpLineSeries() {//1、创建视图QChartView * view = new QChartView(this);this -> layout() -> addWidget(view);//2.创建图表QChart * chart = new QChart();//将图表设置给图表视图view -> setChart(chart);//设置标题chart -> setTitle("折线图");chart -> legend() -> show(); //显示和隐藏图例(默认显示)chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示//添加曲线系列QSplineSeries * spline = new QSplineSeries(this);spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色spline -> setName("曲线系列"); //设置图例的名称//给曲线系列添加点spline -> append(0, 1200);spline -> append(20, 1800);spline -> append(30, 1400);spline -> append(40, 1900);spline -> append(60, 1300);//把系列添加到QChart中chart -> addSeries(spline);//添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用chart -> createDefaultAxes();//获取x轴,就是水平的那一条轴,并设置一些属性auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);axisX -> setRange(0, 100); //设置范围axisX -> setTickCount(11);//获取y轴,就竖直的那一条轴,并设置一些属性auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);axisY -> setRange(1000, 2000); //设置范围axisY -> setTickCount(11);//把轴附加到系列spline -> attachAxis(axisX);spline -> attachAxis(axisY);}
};
#endif // WIDGET_H

 

 

 


http://www.ppmy.cn/ops/129581.html

相关文章

UDP组播测试

支持组播的接口&#xff1a; ip a | grep MULTICAST 环回接口虽然显示不支持组播&#xff0c;实际也可以用于本地测试。 添加路由&#xff08;非必须&#xff1f;&#xff09;&#xff1a; ip route add 239.0.0.0/24 via 10.10.10.206 dev eth0 开放防火墙&#xff1a; 查…

qt配置https请求

qt配置https请求 老套路&#xff0c;一图胜千言&#xff0c;在ui界面请求搜狗&#xff0c;看看能返回什么内容 平台信息 - 开发机操作系统 【win11】 - qt版本 【5.13.2 】 - 编译器 【Mingw32(qt自带安装) 】 - 目标平台【win32】&#xff0c;win7及win7以上x86/64 windows…

论文略读:AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling

ACL 2024 在单一框架内整个多个模态 采用离散表示来统一处理文本、各种模态、图像和音乐

SpringBoot3使用MyBatisPlus时遇到的问题 Invalid bean definition with name

问题&#xff1a; 运行springboot3项目报错&#xff1a;Invalid bean definition with name ‘XXXMapper’ defined in file… 原因&#xff1a;springboot3支持的mabits-plus依赖不同导致的 解决办法&#xff1a; 修改为&#xff1a; <dependency><groupId>com…

10.24.2024刷华为OD C题型(四) -- 对象list按照多个属性排序

文章目录 最长连续子序列AI面板识别语法知识记录 最长连续子序列 https://www.nowcoder.com/discuss/592408743019589632 if __name__ "__main__":# 获取用户输入# numbers int(input().split(,))# str_arr input().split(,)arr [int(num) for num in input(…

C#判断点是否在矩形内

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

【报错】FastGPT本地部署通义千问,报错undefined 当前分组 default 下对于模型 qwen:7b 无可用渠道 【搭建企业级知识库问答系统】

fastgpt报错undefined 当前分组 default 下对于模型 qwen:7b 无可用渠道 安装视频教程【搭建企业级知识库问答系统&#xff0c;本地、免费、私有化、离线、零成本】 https://www.bilibili.com/video/BV1ALxLeuE7W/ 解决方法 只留下自己需要的模型即可&#xff0c;多刷新几遍

人工智能与数据安全:Facebook如何应对隐私挑战

在数字时代&#xff0c;数据隐私和安全成为了用户和企业关注的核心问题。作为全球最大的社交媒体平台之一&#xff0c;Facebook面临着日益严峻的隐私挑战。近年来&#xff0c;频繁发生的数据泄露事件和对用户隐私的质疑&#xff0c;使得Facebook在保护用户数据方面倍感压力。为…