Qt自定义battery控件,电量颜色(红/黄/绿)变化,电量百分比显示,充/放电模式

1.项目背景

        充电式移动端设备GUI需要显示设备的电池电量,以及充/放电模式,便于用户实时查看设备电量状态,合理使用。

注:本文参考作者(火山上的企鹅)Qt Widget 之电池控件(QPainter)_qpainter widget-CSDN博客

新增了一些功能,显示电池充/放电,以及自定义一些设置。

2.项目环境

        Qt 5.15.2

        Desktop Qt 5.15.2 MinGW 64-Bit

        Windows10

3.项目效果

4.部分代码解析

4.1 QPaintEvent跟QPainter

        QPaintEvent是 Qt 中的一个事件类,用于触发绘图操作。是 QWidget 继承自 QEvent 的子类。通常在以下情况下被触发:

a.当窗口需要被绘制时,即需要更新窗口的外观或内容时;

b.当调用 QWidget 的 update() 函数或 repaint() 函数来触发窗口重绘时;

        QPainter类在窗口和其他绘制设备上执行低级绘制,提供高度优化的功能来完成大多数图形用户界面程序所需的工作。能画出从简单线条到复杂形状如饼图和弦等一切图形。它还可以绘制对齐的文本和像素图。

/** *******************************************************************
 *  @Function    : paintEvent
 *  @Parameter   : QPaintEvent
 *  @Return      : 无
 *  @Author      : hx
 *  @Description : 重写绘制事件
 *  @Date        : 2024-10-25 14:24:44
 ******************************************************************* **/
void hBattery::paintEvent(QPaintEvent * event)
{
    Q_UNUSED(event);

    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //1.绘制边框和头部
    fDrawBorder(&painter);
    //2.绘制填充
    fDrawBackground(&painter);
    //3.内部百分比
    fDrawText(&painter);

    //4.是否充电
    if(m_IsRecharge)
        fDrawLightning(&painter);
}

5.代码展示

5.1 hbattery.h

#ifndef HBATTERY_H
#define HBATTERY_H

#include <QWidget>
#include <QPainter>
#include <QTimer>
#include <QRandomGenerator>

class hBattery : public QWidget
{
    Q_OBJECT
public:
    explicit hBattery(QWidget *parent = nullptr);

    void fSetBatteryValue(int batteryValue);

    void fSetBatteryStatus(bool isRecharge);

    void fSetColorstyle(const QPen &borderPen, const QPen &textPen, const QPen &lightingPen);

    void fSetTextFont(const QFont &textFont);

    void fSetBatteryStep(int minValue, int maxValue);

    void fSetBatterySize(int width, int height);
protected:
    void paintEvent(QPaintEvent *);

private slots:
    void fRechargeRun();
priva
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值