QT自定义控件--电池

一、效果展示

在这里插入图片描述

二、绘制过程

2.1、控件分析

电池控件主要由电池框体和电量组成,电池会根据电量的高低改变电量的表示颜色,由此可以将任务分为三部分:绘制电池框体、绘制电量、实现电量增减表示

2.2、原理详解

电量表示是在电池框体绘制了一个填充了颜色的圆角矩形框体。如果把电量分为100份,可以设置一个power变量,取值为0-100,然后电量表示的圆角矩形框体在绘制时,宽度参考power变量就可以实现电量的多少与power挂钩。

在绘制框体时,宽度可以这样确定,( width()/100 ) * power

2.3、绘制框体

void Bettery_Painter::draw_frame(QPainter *painter)
{
    painter->save();

    QPen pen;
    pen.setWidth(4);
    pen.setBrush(buttery_frame);
    painter->setPen(pen);
    painter->setBrush(buttery_background);
    painter->drawRoundedRect(space,space,width()-space*2,height()-space*2,5,5);

    painter->setPen(Qt::NoPen);
    painter->setBrush(buttery_head);
    painter->drawRoundedRect(width()-space,height()/2-height()/5,space,height()/3,5,5);

    painter->restore();
}

2.4、绘制电量

void Bettery_Painter::draw_power(QPainter *painter)
{
    painter->save();

    painter->setPen(Qt::NoPen);
    if(power>0 && power<=20)
    {
        painter->setBrush(low_power);
    }
    else if(power>20 && power<=80)
    {
        painter->setBrush(mid_power);
    }
    else
    {
        painter->setBrush(high_power);
    }

    painter->drawRoundedRect(space,space,(width()-space*2)/100 * power,height()-space*2,5,5);


    painter->restore();
}

2.3、其余代码

void Bettery_Painter::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    draw_frame(&painter);
    draw_power(&painter);
}

void Bettery_Painter::set_power(int power)
{
    this->power = power;

    update();
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝勒里恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值