QT中使用图表之QChart绘制柱状图

绘制条形(柱状)图,系列选择条形系列QBarSeries

x轴选择条形图的种类轴QBarCategoryAxis

1、创建图表视图

//1、创建图表视图
QChartView * view = new QChartView(this);
//开启抗锯齿
view -> setRenderHint(QPainter::Antialiasing);

2、创建图表,并将图表设置给视图,设置图表的一些属性

//2.创建图表
QChart * chart = new QChart();//3.将图表设置给视图
view -> setChart(chart);//设置标题
chart -> setTitle("条形图");
chart -> legend() -> show(); //显示或者隐藏图例(默认显示)

3、创建X轴(使用条形图的种类轴QBarCategoryAxis)和Y轴,并添加到图表中

//构建x轴,条形图使用种类轴
QBarCategoryAxis * axisX = new QBarCategoryAxis(this);
axisX -> append({"2020","2021","2022"
}); //添加x轴上的种类刻度//构建y轴,使用数值轴
QValueAxis * axisY = new QValueAxis(this);
axisY -> setRange(0, 200);chart -> addAxis(axisX, Qt::AlignBottom);
chart -> addAxis(axisY, Qt::AlignLeft);

4、创建条形系列QBarSeries,设置其相关属性,

      并添加条形集合,在条形集合中追加每一个种类对应的值

      可以添加多个条形集合,若有多个,则每一个种类对应的条形就有多个

      并设置条形集合的一些属性

//创建条形系列
QBarSeries * bar = new QBarSeries(this);
bar -> setLabelsVisible(true); //设置标签可见
bar -> setLabelsFormat("@value%"); //改变每一个条形里面的标签,@value表示每一个条形的y值
//bar->setBarWidth(0.1);//设置条形的宽度  取值是一个系数,小于0变窄 大于0变宽//每一个数据集可以有多个数据
QBarSet * bs1 = new QBarSet("C语言"); //参数为图例
bs1 -> append(20); //对应x:2020
bs1 -> append(30); //对应x:2021
bs1 -> append(40); //对应x:2022
//给条形图添加数据集
bar -> append(bs1);//添加第二组数据集,则同一个x处有两个条形
QBarSet * bs2 = new QBarSet("C++"); //图例
bs2 -> append(120);
bs2 -> append(130);
bs2 -> append(140);
bar -> append(bs2);//设置条形图的样式 QBarSet的方法
bs2 -> setBrush(Qt::red); //设置条形的填充
bs2 -> setLabelColor(Qt::black); //设置标签的颜色
bs2 -> setBorderColor((Qt::green)); //设置条形的边框颜色
bs2 -> setLabel("你好"); //设置图例的内容
//bs2->setPen();

5、将条形系列QBarSeries添加到图表中,并和XY轴进行关联

//添加系列
chart -> addSeries(bar);
//将轴附加到系列
bar -> attachAxis(axisX);
bar -> attachAxis(axisY);

 完整代码

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>
#include<QPieSlice>
#include<QPieSeries>
#include<QBarSeries>
#include<QBarSet>
#include<QAreaSeries>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr) : QWidget(parent){resize(800,600);QHBoxLayout* h_box=new QHBoxLayout(this);drawBarPic();}~Widget()=default;//画条形图(柱状图)void drawBarPic(){//1、创建图表视图QChartView* view=new QChartView(this);//开启抗锯齿view->setRenderHint(QPainter::Antialiasing);this->layout()->addWidget(view);//2.创建图表QChart* chart=new QChart();//3.将图表设置给视图view->setChart(chart);//设置标题chart->setTitle("条形图");chart->legend()->show();//显示或者隐藏图例(默认显示)//构建x轴,条形图使用种类轴QBarCategoryAxis* axisX=new QBarCategoryAxis(this);axisX->append({"2020","2021","2022"});//添加x轴上的种类刻度//构建y轴,使用数值轴QValueAxis* axisY=new QValueAxis(this);axisY->setRange(0,200);chart->addAxis(axisX,Qt::AlignBottom);chart->addAxis(axisY,Qt::AlignLeft);//创建条形系列QBarSeries* bar=new QBarSeries(this);bar->setLabelsVisible(true);//设置标签可见bar->setLabelsFormat("@value%");//改变每一个条形里面的标签//bar->setBarWidth(0.1);//设置条形的宽度  取值是一个系数,小于0变窄 大于0变宽//每一个数据集可以有多个数据QBarSet* bs1=new QBarSet("C语言");//参数为图例bs1->append(20);//对应x:2020bs1->append(30);//对应x:2021bs1->append(40);//对应x:2022//给条形图添加数据集bar->append(bs1);//添加第二组数据集,则同一个x处有两个条形QBarSet* bs2=new QBarSet("C++");//图例bs2->append(120);bs2->append(130);bs2->append(140);bar->append(bs2);//设置条形图的样式 QBarSet的方法bs2->setBrush(Qt::red);//设置条形的填充bs2->setLabelColor(Qt::black);//设置标签的颜色bs2->setBorderColor((Qt::green));//设置条形的边框颜色bs2->setLabel("你好");//设置图例的内容//bs2->setPen();//添加系列chart->addSeries(bar);//将轴附加到系列bar->attachAxis(axisX);bar->attachAxis(axisY);}};
#endif // WIDGET_H

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/18475.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Essential Cell Biology--Fifth Edition--Chapter one (8)

1.1.4.6 The Cytoskeleton [细胞骨架] Is Responsible for Directed Cell Movements 细胞质基液不仅仅是一种无结构的化学物质和细胞器的混合物[soup]。在电子显微镜下&#xff0c;我们可以看到真核细胞的细胞质基液是由长而细的丝交叉而成的。通常[Frequently]&#xff0c;可…

【Linux】守护进程

目录 进程组 会话 作业控制 实现守护进程 我们在写完一些网络服务后&#xff0c;如果想让这个服务一直在云服务器的后台运行着&#xff0c;那该如何实现呢&#xff1f;其实就用到了这篇博客要讲的守护进程 进程组 我们首先需要了解进程组的概念&#xff0c;其实sleep 1000这…

nginx.conf配置文件中的命令

打开我们的conf文件 nginx.conf文件中&#xff0c;分为3大块&#xff1a; 全局块&#xff0c;就是events和http块之外的内容。设置nginx服务器整体运行的指令 格式为&#xff1a; 指令名 指令值 events块&#xff0c;用于配置与用户的网络连接的内容&#xff0c;对nginx的…

51单片机基础07 实时时钟-思路及代码参考1

目录 一、实现功能 二、思路1的分析 1、定时器0 2、外部中断0 3、主函数main 4、其他重要功能函数 一、实现功能 1、实现最基本的计时功能&#xff0c;显示时、分、秒&#xff0c;可以通过按键设置时间。 要求&#xff1a;时钟计时精确&#xff0c;按键操作不影响计时。…

vTESTstudio系列15--vTESTstudio-Doors的需求和测试用例的管理

最近有朋友在咨询vTESTstudio中怎么去跟Doors里面的需求去做好管理这方面的问题&#xff0c;临时加两篇文章介绍一下,Lets Go!!! 目录 1.Doors的配置&#xff1a; 1.1 安装Doors AddIn for vTESTstudio&#xff1a; 1.2 更新XML脚本&#xff1a; 1.3 导出需求的Trace Item…

基于Java Springboot编程语言在线学习平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

JDK安装报错“以下应用程序正在使用需要由此安装程序更新的文件”

&#xff08;一&#xff09;问题描述 我刚刚没有截图&#xff0c;这是我在网上看到的图&#xff1a; &#xff08;二&#xff09;可能的解决办法 1. 下方工具栏右键&#xff0c;打开任务管理器按钮&#xff0c;在进程中找到“Java Platform SE binary” 进程&#xff0c;右键结…

数据库第3次作业

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…

Linux之文件系统,软硬连接和动静态库

Linux之文件系统&#xff0c;软硬连接和动静态库 一.文件系统1.1磁盘的存储结构1.2CHS和LBA1.3ext2文件系统 二.软硬连接2.1软链接2.2硬链接 三.静态库和动态库3.1静态库与动态库的概念3.2静态库的创建与使用3.3动态库的创建与使用3.4动态库的加载 一.文件系统 在上篇的学习中…

【项目开发】URL中井号(#)的技术细节

未经许可,不得转载。 文章目录 前言一、# 的基本含义二、# 不参与 HTTP 请求三、# 后的字符处理机制四、# 的变化不会触发网页重新加载五、# 的变化会记录在浏览器历史中六、通过 window.location.hash 操作七、onhashchange 事件八、Google 对 # 的处理机制前言 2023 年 9 月…

TikZ 绘图学习笔记

这篇笔记的所有代码如下&#xff1a; % !TEX TS-program pdflatex % !TEX encoding UTF-8 Unicode% This is a simple template for a LaTeX document using the "article" class. % See "book", "report", "letter" for other typ…

Android Framework层介绍

文章目录 前言一、Android Framework 层概述二、主要组件1. 应用程序接口&#xff08;API&#xff09;2. 系统服务3. Binder4. 资源管理5. Content Provider6. 广播接收器&#xff08;BroadcastReceiver&#xff09;7. 服务&#xff08;Service&#xff09; 三、与 Linux Kerne…

如何选择等保服务

在当今信息化高速发展的时代&#xff0c;企业信息系统已成为业务运营的核心支撑&#xff0c;其安全性直接关系到企业的生存与发展。为了应对日益复杂的网络安全威胁&#xff0c;国家推行了等级保护&#xff08;简称等保&#xff09;制度&#xff0c;作为一项基本的信息安全保障…

MCU中的定时器

第一章 定时器的应用场景 第二章 定时器的原理 2.1 定时器的计数原理 1. 定时器的本质是一个计数器&#xff1b; 2. 计数器是对输入的系统频率信号进行计数&#xff1b; 3. 每来一个周期的信号&#xff0c;计数器的cnt 加一。如果周期T表示为1s&#xff0c;来三个周期就表示…

主页任务与计算器任务

一、主页任务 /* Private includes -----------------------------------------------------------*/ //includes #include "user_TasksInit.h" #include "user_ScrRenewTask.h" #include "main.h" #include "rtc.h" #include "…

javascript 入门-01-变量声明

因缘际会 Alice: 编程入门好像很难吧,我能学会吗 ?我虽然是计算机专业的,但是我几乎没怎么写过代码。但是你先别说我菜,我身边的同学大家都是这样的 🤷 Bob: 那你能写冒泡排序或者求数组最大值吗 ? Alice: 冒泡排序写不出来,求数组最大值还能试试看。不过为什么问这个…

富士施乐DocuContre S2520报打开盖子A,取出纸张。代码077-900故障检修

故障描述: 一台富士施乐DocuContre S2520复印机开机报错:打开盖子A,取出纸张。代码077-900故障,用户之前经常卡纸,卡着、卡着就一直提示打开盖子A,取出纸张了;复印机屏幕提示如下图: 故障检修: 富士施乐DocuContre S2520复印机报打开盖子A,取出纸张。077-900的错误代…

MySQL事务相关面试题

MySQL事务 事务的特性是什么&#xff1f; 事务是一组操作的集合&#xff0c;是不可分割的单位&#xff0c;把所有操作作为一个整体要么同时成功&#xff0c;要么同时失败 ACID 并发事务问题 脏读&#xff1a;一个事务读到了另外一个事务还没有提交的数据 不可重复读&#x…

深度学习与飞桨 PaddlePaddle Fluid

编辑推荐 飞桨PaddlePaddle是百度推出的深度学习框架&#xff0c;不仅支撑了百度公司的很多业务和应用&#xff0c;而且随着其开源过程的推进&#xff0c;在其他行业得到普及和应用。 本书基于2019年7月4日发布的飞桨PaddlePaddle Fluid 1.5版本&#xff08;后续版本会兼容旧版…

C++ | Leetcode C++题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; using ULL unsigned long long;class Solution { public:vector<ULL> getCandidates(const string& n) {int len n.length();vector<ULL> candidates {(ULL)pow(10, len - 1) - 1,(ULL)pow(10, len) 1,};ULL selfPrefi…