解释:
1、封装内容:1个按钮画上两张图片(等级迭代)
2、参数:需要描述的等级
函数定义:
#include <QTimer> #define LV_PNG "..." #define LV_PNG_HEIGHT 7 #define LV_PNG_WIDTH 10#define LV_NUM_PNG "..." #define LV_NUM_HEIGHT 7 #define LV_NUM_WIDTH 6void initLevelButton();void drawLevelButton(int level);
源代码:
void CCMainWindow::initLevelButton() {drawLevelButton(0);QTimer* timer = new QTimer(this);timer->setInterval(100); //间隔毫秒connect(timer, &QTimer::timeout, //循环响应开始[this]() {static int lv = 0;if (lv == 99) lv = 0; //循环节点drawLevelButton(lv++);});timer->start(); //时间开始}void CCMainWindow::drawLevelButton(int level) {QPixmap pixmap(ui.levelBtn->size()); //画布pixmap.fill(Qt::transparent);QPainter p(&pixmap); //笔int y = (ui.levelBtn->height() - LV_PNG_HEIGHT) / 2;p.drawPixmap(0, y, QPixmap(LV_PNG));int tenNum = level / 10;int unitNum = level % 10;QPixmap levelValue(LV_NUM_PNG);//绘制十位p.drawPixmap(LV_PNG_WIDTH, y, levelValue, //在 LV 后面开始绘制tenNum*LV_NUM_WIDTH, 0, //起点LV_NUM_WIDTH, LV_NUM_HEIGHT); //终点(大小)//个位p.drawPixmap(LV_NUM_WIDTH + LV_PNG_WIDTH, y, levelValue, //在 LV 十位数字 后面unitNum*LV_NUM_WIDTH, 0, //起点LV_NUM_WIDTH, LV_NUM_HEIGHT); //终点(大小)ui.levelBtn->setIcon(pixmap);ui.levelBtn->setIconSize(ui.levelBtn->size()); }