1、添加背景图片
QPixmap back;
back.load(":/img/gamemap.bmp");
back = back.scaled(QSize(this->width(),this->height()));
2、paintEvent
函数
(1)在头文件中声明paintEvent
函数
private:
void paintEvent(QPaintEvent *event);
paintEvent
在父类中声明,这里重写这个绘制函数
(2)编写paintEvent
函数
#include <QPainter>
void MainWindow::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
static int pos = 0;
QPainter painter(this);
pos = (pos+1)%this->height();
painter.drawPixmap(0,pos,this->width(),this->height(),back);
painter.drawPixmap(0,pos-this->height(),this->width(),this->height(),back);
}
(3)添加定时器
paintEvent
函数可由update
函数强制触发,故设置一个定时器执行update
函数,定时器的周期则决定了图片上下滚动的速度
QTimer *timer;
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(update()));
timer->start(10);
(4)效果展示
- 出于图片大小考虑,FPS没有设置很高,所以GIF有些卡顿