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;…

Spring集成MyBatis

基本准备 创建Dynamic Web Project 引入相关jar包 Spring框架相关jar包 MyBatis连接Spring相关jar包 连接MySQL驱动包 JSTL标签库包 添加db.properties文件&#xff0c;该属性文件配置连接数据库相关信息 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/myba…

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…

linux编辑技巧

vim的模式 正常模式&#xff1a;用于导航和打开文件。编辑模式&#xff1a;用于输入文本。可视模式&#xff1a;用于选择文本块进行操作。命令模式&#xff1a;执行命令的强大方式。 正常模式 移动 hjkl上下左右^开头 $结尾gg/G 文件开头或结尾 ctrlo返回ctrlu ctrlf&#xff…

复试专业课问题

1、数据结构&#xff1a;详细描述归并排序的过程 归并排序是用分治思想&#xff0c;分治模式在每一层递归上有三个步骤&#xff1a; 分解&#xff08;Divide&#xff09;&#xff1a;将n个元素分成个含n/2个元素的子序列。解决&#xff08;Conquer&#xff09;&#xff1a;用…

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;问距离地球多少个天文单…

python中的垃圾回收机制

Python中的垃圾回收&#xff08;Garbage Collection&#xff0c;简称GC&#xff09;机制是一个自动内存管理过程&#xff0c;它负责在对象不再被使用时释放内存资源。Python的垃圾回收主要依赖于引用计数&#xff08;Reference Counting&#xff09;来跟踪和回收不再使用的对象…

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…

初识虚拟机:探索数字世界的神奇工具

前言 在计算机科学领域&#xff0c;虚拟机是一种强大而神奇的工具&#xff0c;它可以让我们在一台计算机上同时运行多个操作系统&#xff0c;仿佛创造了一个独立的数字世界。本文将带你深入探索虚拟机&#xff0c;帮助你更好地理解这个让计算机变得更加灵活多样的工具。 什么…

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

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

Go语言并发(一)——goroutine与Waitgroup

协程 前言 在很多语言中都会提到并发的概念&#xff0c; 例如python&#xff0c; Java&#xff0c;C等等&#xff0c;一般来说 都会 使用多线程或多进程来 实现并发调度&#xff0c;但是多线程/进程 一般会耗费大量内存, 而在go 语言中我们可以使用协程来达到并发调度的目的&…

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

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

Pytorch实用教程:Pytorch中model.eval()和torch.no_grad()的作用及用法

文章目录 1. model.eval()为什么需要 .eval() 方法&#xff1f;使用 .eval() 方法示例 注意事项 2. torch.no_grad()为什么需要 torch.no_grad()&#xff1f;使用 torch.no_grad()示例场景注意事项 1. model.eval() model.eval() 在 PyTorch 中是一个重要的方法&#xff0c;用…

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

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