QPainter+Qtimer 模仿一下简单的电池充电

QPainter 简述:

 Qt 中提供了强大的 2D 绘图系统,QPainter 类提供了大量高度优化的函数来完成 GUI 编程所需要的大部分绘制工作。
 从最简单的点,线,面到各种几何图形三角矩形等等等到各种复杂的组合图形。
  • 这里我们来画一个电池控件,用到了QTimer 来模仿电池充电的效果
    mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    //绘制
    void paintEvent(QPaintEvent *event);
    //当前电量
    int m_value = 0;
    //定时器
    QTimer *m_time;
    void valueChange();
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QPainter>
#include <QTimer>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_time = new QTimer();

    connect(m_time,&QTimer::timeout,this,&MainWindow::valueChange);
    m_time->start(500);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter paint(this);
    paint.setPen(QPen(Qt::green,2));


    //画左边大矩形框
    paint.drawRect(150,100,50,25);
    //画右边小矩形框
    paint.drawRect(200,107,5,10);

    paint.setBrush(Qt::green);

    //填充左边大矩形框
    paint.drawRect(150,100,m_value,25);

    //当充满时候填充右边小矩形框
    if(m_value == 50)
    {
        paint.drawRect(200,107,5,10);
    }
}

void MainWindow::valueChange()
{
    if(m_value < 50)
    {
        m_value += 5;
    }
    else
    {
        m_value = 0;
    }
    update();
}

效果图:(我不会做动态图,用手机录制了一下不清晰凑合看吧)

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述

    ———— 1998年菜鸡码农一枚,请大佬们多多照顾!

猜你喜欢

转载自blog.csdn.net/weixin_42837024/article/details/81329449