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年菜鸡码农一枚,请大佬们多多照顾!