Qt使用QWidget重绘实现圆环形渐变色进度条(支持不确定进度模式)

效果如下:

纯竖直方向顶部蓝色到底部青色的渐变。

从左上角偏左45°到右下角偏右45°蓝色青色渐变。

从左上角偏左22.5°到右下角偏右22.5°蓝色青色渐变。(这个角度渐变最好看)

可以选择添加背景图片

支持两种模式:正常进度模式不确定进度模式

(在不确定进度模式下可以选择手动隐藏中间的文本)

仅有两个文件:

circleprogressbar.h

#ifndef CIRCLEPROGRESSBAR_H
#define CIRCLEPROGRESSBAR_H#include <QWidget>
#include <QPaintEvent>
#include <QFont>
#include <QColor>
#include <QTimer>class CircleProgressBar : public QWidget
{Q_OBJECT
public:explicit CircleProgressBar(QWidget *parent = nullptr);protected:// 重绘void paintEvent(QPaintEvent *event);private:// 初始化void Init();signals:// 调用setValue(int)导致当前进度值发送变化时发出此信号,没有变化时不会发出void valueChanged(int value);public:// 设置进度值的最大值void setMaximum(int maximum=100);// 获取进度值的最大值int maximum();// 设置进度值的最小值void setMinimum(int minimum=0);// 获取进度值的最小值int minimum();// 设置进度值的最小值和最大值范围void setRange(int minimum=0, int maximum=100);// 设置当前进度值void setValue(int value);// 获取当前进度值int value();// 设置进度槽的宽度void setSlotWidth(int width=10);// 设置进度条的宽度void setBlockWidth(int width=10);// 设置进度槽的颜色void setSlotColor(const QColor &color);// 设置进度条的渐变起止颜色void setBlockColor(const QColor &colorBegin,const QColor &colorEnd);// 设置进度值文本是否可见void setTextVisible(bool visible);// 设置文本字体void setFont(const QFont &font);// 获取文本的字体QFont font();// 设置文本的颜色void setFontColor(const QColor &color);// 设置背景图片void setBackgroundPixmap(const QString &pic);// 设置背景图片是否可见void setBackgroundPixmapVisible(bool visible);// 使用不确定进度模式void setUncertainMode(bool enable);// 是否正处于不确定进度模式bool isUncertainMode();// 设置不确定进度模式滑块的度数跨度(仅限 0 - 360 之间的整数)void setUncertainModeSpanAngle(int spanAngle);private slots:// 不去定进度模式下进度条旋转刷新void slot_UncertainModeAutoUpdate();private:int m_SlotWidth;            // 进度槽宽度QColor m_SlotColor;         // 进度槽颜色int m_BlockWidth;           // 进度条宽度(进度条宽度一般要<=进度槽宽度)QColor m_BlockColorBegin;   // 进度条渐变开始颜色QColor m_BlockColorEnd;     // 进度条渐变结束颜色int m_Value;                // 当前进度值int m_Maximum;              // 最大值int m_Minimum;              // 最小值bool m_TextVisible;         // 文本是否可见QFont m_Font;               // 文本字体QColor m_FontColor;         // 文本颜色bool m_BgPixmapVisible;     // 背景图片是否可见QPixmap m_BgPixmap;         // 背景图片bool m_UncertainMode;       // 进度条为不确定模式int m_UncertainModeSpanAngle;// 不确定模式的角度跨度int m_UncertainModeAutoAngleCnt;// 不确定模式的起始角度QTimer m_UncertainModeUpdateTimer;// 不确定模式时用于定时刷新显示
};#endif // CIRCLEPROGRESSBAR_H

circleprogressbar.cpp

源码Demo下载:

https://download.csdn.net/download/wu10188/89101821

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费试用!英智未来BayStone平台提供高性能算力服务

英智未来BayStone人工智能公共服务平台聚焦全球高端算力资源&#xff0c;提供基于英伟达HGX1系列GPU算力服务&#xff0c;现面向所有政企和科研机构提供现货算力资源服务。点击申请试用 BayStone平台通过全球算力资源调度&#xff0c;帮助用户高效使用高端算力资源&#xff0c;…

TypeScript系列之-理解TypeScript类型系统画图讲解

TypeScript的输入输出 如果我们把 Typescript 编译器看成一个黑盒的话。其输入则是使用 TypeScript 语法书写的文本或者文本集合。 输出是编译之后的 JS 文件 和 .d.ts 的声明文件 其中 JS 是将来需要运行的文件(里面是没有ts语法&#xff0c;有一个类型擦除的操作)&#xff0…

【保姆级】国内Onlyfans如何订阅?OnlyFans订阅保姆级指南

​ 一、 Onlyfans介绍 OnlyFans是一个创立于2016年的在线平台和应用程序&#xff0c;它集结了众多来自健身、音乐、艺术等领域的内容创作者&#xff0c;呈现了他们精彩纷呈的作品。该平台颠覆了传统商业模式&#xff0c;为创作者提供了一个展示独特内容的舞台&#xff0c;用户…

【报错】Python3.9及以上相对路径导入文件夹方式

Python3.9及以上相对路径导入文件夹 python跨文件夹调用别的文件夹下的py文件或参数方式 5.7. 包相对导入 相对导入使用前缀点号。 一个前缀点号表示相对导入从当前包开始。 两个或更多前缀点号表示对当前包的上级包的相对导入&#xff0c;第一个点号之后的每个点号代表一级…

学python能赚钱吗???

python爬虫去哪接单 python爬虫接单的方式有两种 一&#xff0c;接定制需求的单子 爬虫定制的需求其实很多&#xff0c;比如 “爬取某某电商网站的评论”&#xff0c;这类需求一般是按照爬取数据量的大小来收费&#xff0c;价格不会太高&#xff0c;正常500的样子。 常见的…

个推助力小米汽车APP实现智能用户触达,打造智能出行新体验

4月3日&#xff0c;小米SU7首批交付仪式在北京亦庄的小米汽车工厂总装车间举行&#xff0c;全国28城交付中心也同步开启首批交付。随着小米SU7系列汽车的正式发售和交付&#xff0c;小米汽车APP迎来了用户体量的爆发式增长。 小米汽车APP是小米汽车官方推出的手机应用&#xff…

Vue - 你知道Vue组件之间是如何进行数据传递的吗

难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…

swampCTF 2024

swampCTF 2024 MISC Discord Challenge swampCTF{w3lc0m3_t0_th3_swamp} What the Form google form不停重定向&#xff0c;直接F12看一下。flag就在前端。 swampCTF{F0rm5_K33p5_D4T4_H1dd3n} OSINT Lost in Space 图片是旅行者2号&#xff0c;问距离地球多少个天文单…

windows下python3安装rolabelimg或者labelimg2标注斜框

1.前言 大家常用labelimg标注物体&#xff0c;但当目标物体是倾斜角度时&#xff0c;labelimg标注时会把不属于物体的一大片区域也标注&#xff0c;这样标注效果不大好&#xff0c;那么有什么工具可以标注倾斜的矩形框呢&#xff0c;本篇通过介绍安装rolabelimg或者labelimg2&…

创建型模式--3.工厂模式 【人造恶魔果实工厂2】

1. 简单工厂模式的弊端 在上一节简单工厂模式中&#xff0c;创建了一个工厂类&#xff0c;用于生产需要的对象&#xff0c;但是这种方式有一个弊端&#xff0c;它违反了设计模式中的开放-封闭原则&#xff0c;先来看相关的代码&#xff1a; // 恶魔果实工厂类 enum class Typ…

使用美化方法设计项目主窗体(二)

使用美化方法设计项目主窗体 分析效果图的实现 效果图&#xff1a; 新建 Windows 窗体 新窗体命名&#xff1a;FrmMain.cs修改窗体的位置&#xff1a;StartPosition&#xff1a;CenterScreen窗体的无边框设计&#xff1a;FormBorderStyle&#xff1a;none修改窗体的大小&a…

高级优化理论与方法(七)

高级优化理论与方法&#xff08;七&#xff09; Solving Linear EquationsCase 2TheoremKaczmarzs AlgorithmTheoremExample PseudoinverseDefinitionSpecial Case 1Special Case 2 Properties of PseudoinverseLemma 1: Unique pseudoinverseLemma 2: Full Rank Factorization…

MySQL8.3.0 主从复制方案(master/slave)

一 、什么是MySQL主从 MySQL主从&#xff08;Master-Slave&#xff09;复制是一种数据复制机制&#xff0c;用于将一个MySQL数据库服务器&#xff08;主服务器&#xff09;的数据复制到其他一个或多个MySQL数据库服务器&#xff08;从服务器&#xff09;。这种复制机制可以提供…

如何让阿里云AI001号员工帮我写代码(含IDEA插件使用)

国内首个AI程序员入职阿里云&#xff1a;专属工号AI001&#xff0c;KPI是一人写完公司20%代码。 不管是真是假&#xff0c;AI 程序员发展的趋势是无法改变的&#xff0c;小米汽车发布会上&#xff0c;雷军说到小米汽车工厂的自动化率达到90%以上&#xff0c;有些车间甚至100%的…

手术麻醉系统源码 医疗信息管理系统源码C#.net6.0+ vs2022,vscode+BS网页版 手麻系统源码

手术麻醉系统源码 医疗信息管理系统源码C#.net6.0 vs2022,vscodeB/S网页版 手麻系统源码 手术麻醉管理系统是应用于医院手术室、麻醉科室的计算机软件系统。该系统针对整个围术期&#xff0c;对病人进行全程跟踪与信息管理&#xff0c;自动集成病人HIS、LIS、RIS、PACS信息&…

jdk8新特性 方法引用

简介 lambda表达式是用来简化匿名内部类的方法引用 使用来简化 lambda表达式的 方法引用的标志 两个冒号 静态方法 静态方法 class CompareByAge {public static int compare(Student o1, Student o2) {return o1.getAge() - o2.getAge();} }静态方法引用 Arrays.sort(students…

表格比对作业指导书 使用access对excel表格数据进行比对

初级代码游戏的专栏介绍与文章目录-CSDN博客 &#xff08;注&#xff1a;这是以前给秘书写的作业指导书&#xff0c;用来处理两个表格中哪些人存在、哪些人不存在。看起来当时使用的access版本是2016。access是微软office套件中的一个软件&#xff0c;存在于家庭版&#xff0c…

​SCP收容物041~050​

注 &#xff1a;此文接SCP收容物031~040,本文只供开玩笑 ,与steve_gqq_MC合作。 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-041 scp-042 scp-043 scp-044 scp-045…

二维相位解包理论算法和软件【全文翻译- 噪声滤波(3.53.6)】

3.5 噪音过滤 在本节中,我们将简要讨论相位数据的滤波问题。除了提高信噪比之外,噪声滤波还有助于减少残差的数量,从而大大简化相位解包过程。不过,我们必须注意到一个重要的问题。正如我们在第 1 章中指出的,相位本身并不是信号。它只是信号的一种属性。因此,应该过滤的…

JSON字符串中获取一个特定字段的值

JSON字符串中获取一个特定字段的值 一、方式一&#xff0c;引用gson工具二、方式二&#xff0c;使用jackson三、方式三&#xff0c;使用jackson转换Object四、方式四&#xff0c;使用hutool&#xff0c;获取报文数组数据 一、方式一&#xff0c;引用gson工具 测试报文&#xf…