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

效果如下:

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

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

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

可以选择添加背景图片

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

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

另外组件的整体尺寸,圆环粗细,各部分颜色,字体都是可以随意调整的,还支持QWidget的QSS语句调整背景色,外边框等。

仅有两个文件:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

媒体邀约专访如何深入的做一篇专访报道?流程分享

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 进行媒体邀约专访并深入撰写一篇专访报道是一个系统性工作&#xff0c;涉及多个环节。以下是一个详细的流程分享&#xff1a; 一、前期准备 确定专访目的与主题&#xff1a;明确专访希…

Training - 使用 WandB 配置管理模型训练过程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137529140 WandB (Weights&Biases) 是轻量级的在线模型训练可视化工具&#xff0c;类似于 TensorBoard&#xff0c;可以帮助用户跟踪…

可编程网关:如何助力智慧工厂实现智能化管理

一个具体的实际案例&#xff0c;详细说明可编程网关在某汽车零部件智慧工厂中的应用细节&#xff1a; 案例背景&#xff1a; 某大型汽车零部件制造企业&#xff0c;致力于提升生产效率、降低运营成本、确保产品质量&#xff0c;决定对其传统工厂进行全面数字化改造&#xff0…

从零开始:一步步学习爬虫技术的实用指南(一)

从零开始&#xff1a;一步步学习爬虫技术的实用指南&#xff08;一&#xff09; Urllib1.什么是互联网爬虫2.爬虫核心3.爬虫的用途4.爬虫的分类4.1 通用爬虫&#xff1a;4.1 聚焦爬虫&#xff1a; 5.反爬手段5.1 User‐Agent&#xff1a;5.2.代理IP5.3.验证码访问5.4.动态加载网…

深入理解JVM后端优化技术-逃逸分析(Escape Analysis)

相关系统 深入理解jvm执行引擎-CSDN博客 深入理解JVM后端优化技术-方法内联-CSDN博客 定义 当一个对象在方法里面被定义后,它可能让外部方法所引用,作为调用参数传递到其它的方法中,这种称为方法逃逸;还有可能被外部线程访问到,赋值给可以在其它线程中访问的实例数量,这…

【测试篇】Selenium + Java环境搭建

文章目录 Selenium Java环境搭建配置系统环境变量PATH验证环境是否搭建成功常见问题&解决办法 Selenium Java环境搭建 Java版本最低要求为8&#xff0c;这里默认大家都下载好了Java。&#x1f606; 下载chrome浏览器&#xff08;点我下载&#xff09; 观察chrome版本。…

混合专家(MoE)模型

文心一言 混合专家模型&#xff08;Mixture of Experts&#xff0c;简称MoE&#xff09;是一种基于Transformer架构的模型设计策略。它通过将多个模型&#xff08;称为“专家”&#xff09;直接结合在一起&#xff0c;以获得更好的预测性能。这种模型特别适用于处理大规模数据…

学习操作系统之多道批处理系统

1964年IBM生产了第一台小规模集成电路计算机IBM System/360&#xff08;第三代计算机&#xff09;&#xff0c;并为该计算机开发了OS/360操作系统&#xff0c;是第一个多道批处理系统。 多道批处理的运行机制&#xff1a; 多道批处理系统同样要求事先将多道作业存放到外存上并…

人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理_对话服务创建---人工智能工作笔记0159

先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…

​泛微文书定人事档案一体化管理,覆盖人事管理全过程,人事档案全量归档

人事档案是个人身份、学历、资历等方面的证据&#xff0c;与个人工资待遇、社会劳动保障、组织关系紧密挂钩&#xff0c;具有法律效力。应注重收集和鉴别、整理工作&#xff0c;提升人事档案利用率。 企业应依据国家有关人事档案管理规定&#xff0c;制定企业人事档案管理办法&…

python机器学习-乳腺癌细胞挖掘和生存分析(2024年新版)

​ 随着人们生活水平提高&#xff0c;大家不仅关注如何生活&#xff0c;而且关注如何生活得更好。在这个背景下&#xff0c;精准治疗和预测诊断成为当今热门话题。 据权威医学资料统计&#xff0c;全球大约每13分钟就有一人死于乳腺癌&#xff0c;乳腺癌已成为威胁当代人健康的…

DataEase-V1.18版本源码通过Docker镜像部署与静态资源通过阿里云OSS存储实现看这一篇就够了

修改DataEase实现静态资源阿里云OSS存储 后端源码文件读取配置类配置 1.阿里云OSS配置类 /*** ClassName AliyunConfig.java* author shuyixiao* version 1.0.0* Description 阿里云OSS配置* createTime 2024年04月03日 10:03:00*/ Data Configuration public class AliyunC…

创建型模式--5.建造者模式【卡雷拉公司】

1. 造船&#xff0c;我是专业的 在海贼世界中&#xff0c;水之都拥有全世界最好的造船技术&#xff0c;三大古代兵器之一的冥王就是由岛上的造船技师们制造出来的。现在岛上最大、最优秀的造船公司就是卡雷拉公司&#xff0c;它的老板还是水之都的市长&#xff0c;财富权力他都…

大话设计模式——11.桥接模式(Bridge Pattern)

简介 将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化。 UML图&#xff1a; 应用场景&#xff1a; 系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 示例…

护眼台灯什么牌子好?爱德华、书客、明基护眼台灯真实测评

台灯是我们日常比较实用的一盏桌面照明灯具&#xff0c;不管是休闲看书、学习、办公都会用得上。如果使用了一款光源不好的台灯&#xff0c;时间长了可能就会影响我们的眼睛健康&#xff0c;特别是孩子的眼睛&#xff0c;还没有发育完全&#xff0c;影响更大。 在面临如今市面上…

设计模式——2_7 状态(State)

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游 ——刘过《唐多令芦叶满汀州》 文章目录 定义图纸一个例子&#xff1a;如何模拟一个转笔刀自动转笔刀PencilPencilSharpener 投诉和改善钝刀BladePencilSharpener 没有铅笔PencilSharpener if if ifStatePencilSharpener 碎…

动态物体检测 | 复杂环境下多目标动态物体实时检测算法实现

项目应用场景 面向复杂环境下的多目标动态物体实时检测场景&#xff0c;项目采用一种在线体积映射的算法实现。 项目效果 项目细节 > 具体参见项目 README.md (1) 安装、编译工程&#xff0c;包括 ROS&#xff0c;具体步骤参见 README(2) 执行 DOALS Sequence roslaunch d…

Point cloud转 Laser sacn

文章目录 概要安装pointcloud_to_laserscan修改配置运行结果 概要 在ROS中将点云&#xff08;PointCloud&#xff09;转换为激光扫描&#xff08;LaserScan&#xff09;是一个常见的任务&#xff0c;尤其是在某些机器人系统中&#xff0c;激光雷达数据被用于导航和避障&#x…

Windows 2003 R2与Windows 2022建立域信任报错:本地安全机构无法跟域控制器获得RPC连接。请检查名称是否可以解析,服务器是否可用。

在Windows Server 2003 R2与Windows Server 2022之间建立域信任时遇到“本地安全机构无法与域控制器获得RPC连接”的错误&#xff0c;可能是由于以下几种原因&#xff1a; DNS 解析问题&#xff1a; 确保源域和目标域的DNS配置正确&#xff0c;能够互相解析对方的域名和IP地址。…

达梦数据库的V$DM_INI和V$PARAMETER系统视图

V$DM_INI和V$PARAMETER是达梦数据库中两个常用的系统视图&#xff0c;用于查看数据库的配置参数。这两个视图的主要区别在于它们展示参数的来源和用途。 V$DM_INI V$DM_INI视图主要用于展示数据库启动时加载的初始化参数信息。这些信息通常来自于数据库的初始化参数文件&…