当前位置: 首页 > news >正文

《QT实用小工具·一》电池电量组件

1、概述
项目源码放在文章末尾
本项目实现了一个电池电量控件,包含如下功能:

  1. 可设置电池电量,动态切换电池电量变化。
  2. 可设置电池电量警戒值。
  3. 可设置电池电量正常颜色和报警颜色。
  4. 可设置边框渐变颜色。
  5. 可设置电量变化时每次移动的步长。
  6. 可设置边框圆角角度、背景进度圆角角度、头部圆角角度。

下面是demo演示:
在这里插入图片描述
项目部分代码如下所示:

#ifndef BATTERY_H
#define BATTERY_H/*** 电池电量控件 * 1. 可设置电池电量,动态切换电池电量变化。* 2. 可设置电池电量警戒值。* 3. 可设置电池电量正常颜色和报警颜色。* 4. 可设置边框渐变颜色。* 5. 可设置电量变化时每次移动的步长。* 6. 可设置边框圆角角度、背景进度圆角角度、头部圆角角度。*/#include <QWidget>#ifdef quc
class Q_DECL_EXPORT Battery : public QWidget
#else
class Battery : public QWidget
#endif{Q_OBJECTQ_PROPERTY(double minValue READ getMinValue WRITE setMinValue)Q_PROPERTY(double maxValue READ getMaxValue WRITE setMaxValue)Q_PROPERTY(double value READ getValue WRITE setValue)Q_PROPERTY(double alarmValue READ getAlarmValue WRITE setAlarmValue)Q_PROPERTY(bool animation READ getAnimation WRITE setAnimation)Q_PROPERTY(double animationStep READ getAnimationStep WRITE setAnimationStep)Q_PROPERTY(int borderWidth READ getBorderWidth WRITE setBorderWidth)Q_PROPERTY(int borderRadius READ getBorderRadius WRITE setBorderRadius)Q_PROPERTY(int bgRadius READ getBgRadius WRITE setBgRadius)Q_PROPERTY(int headRadius READ getHeadRadius WRITE setHeadRadius)Q_PROPERTY(QColor borderColorStart READ getBorderColorStart WRITE setBorderColorStart)Q_PROPERTY(QColor borderColorEnd READ getBorderColorEnd WRITE setBorderColorEnd)Q_PROPERTY(QColor alarmColorStart READ getAlarmColorStart WRITE setAlarmColorStart)Q_PROPERTY(QColor alarmColorEnd READ getAlarmColorEnd WRITE setAlarmColorEnd)Q_PROPERTY(QColor normalColorStart READ getNormalColorStart WRITE setNormalColorStart)Q_PROPERTY(QColor normalColorEnd READ getNormalColorEnd WRITE setNormalColorEnd)public:explicit Battery(QWidget *parent = 0);~Battery();protected:void paintEvent(QPaintEvent *);void drawBorder(QPainter *painter);void drawBg(QPainter *painter);void drawHead(QPainter *painter);private slots:void updateValue();private:double minValue;        //最小值double maxValue;        //最大值double value;           //目标电量double alarmValue;      //电池电量警戒值bool animation;         //是否启用动画显示double animationStep;   //动画显示时步长int borderWidth;        //边框粗细int borderRadius;       //边框圆角角度int bgRadius;           //背景进度圆角角度int headRadius;         //头部圆角角度QColor borderColorStart;//边框渐变开始颜色QColor borderColorEnd;  //边框渐变结束颜色QColor alarmColorStart; //电池低电量时的渐变开始颜色QColor alarmColorEnd;   //电池低电量时的渐变结束颜色QColor normalColorStart;//电池正常电量时的渐变开始颜色QColor normalColorEnd;  //电池正常电量时的渐变结束颜色bool isForward;         //是否往前移double currentValue;    //当前电量QRectF batteryRect;     //电池主体区域QTimer *timer;          //绘制定时器public://默认尺寸和最小尺寸QSize sizeHint() const;QSize minimumSizeHint() const;//设置范围值void setRange(double minValue, double maxValue);void setRange(int minValue, int maxValue);//获取和设置最小值double getMinValue() const;void setMinValue(double minValue);//获取和设置最大值double getMaxValue() const;void setMaxValue(double maxValue);//获取和设置电池电量值double getValue() const;void setValue(double value);//获取和设置电池电量警戒值double getAlarmValue() const;void setAlarmValue(double alarmValue);//获取和设置是否启用动画显示bool getAnimation() const;void setAnimation(bool animation);//获取和设置动画显示的步长double getAnimationStep() const;void setAnimationStep(double animationStep);//获取和设置边框粗细int getBorderWidth() const;void setBorderWidth(int borderWidth);//获取和设置边框圆角角度int getBorderRadius() const;void setBorderRadius(int borderRadius);//获取和设置背景圆角角度int getBgRadius() const;void setBgRadius(int bgRadius);//获取和设置头部圆角角度int getHeadRadius() const;void setHeadRadius(int headRadius);//获取和设置边框渐变颜色QColor getBorderColorStart() const;void setBorderColorStart(const QColor &borderColorStart);QColor getBorderColorEnd() const;void setBorderColorEnd(const QColor &borderColorEnd);//获取和设置电池电量报警时的渐变颜色QColor getAlarmColorStart() const;void setAlarmColorStart(const QColor &alarmColorStart);QColor getAlarmColorEnd() const;void setAlarmColorEnd(const QColor &alarmColorEnd);//获取和设置电池电量正常时的渐变颜色QColor getNormalColorStart() const;void setNormalColorStart(const QColor &normalColorStart);QColor getNormalColorEnd() const;void setNormalColorEnd(const QColor &normalColorEnd);public Q_SLOTS:void setValue(int value);void setAlarmValue(int alarmValue);Q_SIGNALS:void valueChanged(double value);
};#endif // BATTERY_H

源码下载

相关文章:

  • Windows 最佳文件管理器:快速、简单、直观、自由 | 开源日报 No.175
  • x86架构中的寄存器和常用指令
  • FlinkSQL之Flink SQL Join二三事
  • <el-table>设置一列为固定字段,其他列为循环生成
  • 星光/宝骏/缤果/长安 车机CarPlay手机操作破解教程V2.0版本(无需笔记本、无需笔记本、无需笔记本)
  • 各大pdf转word软件都用的哪家的ocr引擎?
  • 详解IOS的Automatically Sign在设备上打包
  • MySQL索引18连问,谁能顶住
  • Hbase 王者荣耀数据表 HBase常用Shell命令
  • 目标检测——中国交通标志数据集
  • JAVA 100道题(22)
  • QT基本数据类型
  • Redis持久化:RDB与AOF
  • Facebook账号防封方法及解禁方法
  • 图论记录之最短路迪杰斯特拉
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Angular 响应式表单 基础例子
  • gf框架之分页模块(五) - 自定义分页
  • js操作时间(持续更新)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • PHP CLI应用的调试原理
  • Spring Cloud中负载均衡器概览
  • Spring声明式事务管理之一:五大属性分析
  • vue学习系列(二)vue-cli
  • 分布式事物理论与实践
  • 解析 Webpack中import、require、按需加载的执行过程
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 为什么要用IPython/Jupyter?
  • 一、python与pycharm的安装
  • 译米田引理
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 中文输入法与React文本输入框的问题与解决方案
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #git 撤消对文件的更改
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $().each和$.each的区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C#)一个最简单的链表类
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (三分钟)速览传统边缘检测算子
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (推荐)叮当——中文语音对话机器人
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET/C# 使用反射注册事件
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据