绘制上下结构的电池
#ifndef QMYBATTERY_H
#define QMYBATTERY_H
#include <QObject>
#include <QWidget>
#include <QColor>
class qMyBattery : public QWidget
{
Q_OBJECT
private:
QColor mColorBack=Qt::white;//背景颜色
QColor mColorBorder=Qt::black;//电池边框颜色
QColor mColorPower=Qt::green;//电量柱颜色
QColor mColorWarning=Qt::red;//电量短缺时的颜色
QColor mDefineColor = QColor::fromRgb(24, 222, 166);
QColor mColorYellow = Qt::yellow;//黄色
int mPowerLevel=60;//电量0-100
int mWarnLevel=20;//电量低警示阈值
protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
public:
explicit qMyBattery(QWidget *parent = 0);
// void setPowerLevel(int pow);//设置当前电量
// int powerLevel();
// void setWarnLevel(int warn);//设置电量低阈值
// int warnLevel();
// QSize sizeHint();//报告缺省大小
signals:
// void powerLevelChanged(int );
};
#endif // QMYBATTERY_H
#include "qmybattery.h"
#include <QPainter>
#include <QFont>
qMyBattery::qMyBattery(QWidget *parent) : QWidget(parent)
{
}
void qMyBattery::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
QRect rect(0,0,width(),height()); //viewport矩形区
painter.setViewport(rect);//设置Viewport
painter.setWindow(0,0,31,110); // 设置窗口大小,逻辑坐标
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::TextAntialiasing);
QPen pen;//设置画笔
pen.setWidth(1); //线宽
pen.setColor(mDefineColor); //划线颜色
pen.setStyle(Qt::SolidLine);//线的类型,实线、虚线等
pen.setCapStyle(Qt::FlatCap);//线端点样式
pen.setJoinStyle(Qt::BevelJoin);//线的连接点样式
painter.setPen(pen);
QBrush brush;//设置画刷
brush.setColor(mDefineColor); //画刷颜色
brush.setStyle(Qt::SolidPattern);
painter.setBrush(brush);
rect.setRect(11,0,8,4);
painter.drawRect(rect);
brush.setColor(mDefineColor); //画刷颜色
brush.setStyle(Qt::SolidPattern); //画刷填充样式
painter.setBrush(brush);
rect.setRect(5,6,20,65);
painter.drawRect(rect);//绘制电池边框
}
只是完成了基本绘制,后面会完善一下电量条的绘制功能
目前的代码,拖一个QWdget的控件,然后右键提升成这个类,就可以看到效果了
785

被折叠的 条评论
为什么被折叠?



