欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt实现动态图

程序员文章站 2024-01-19 12:36:46
...

实现思路
1.将动图的所有图片放入到一个数组中。
2.创建一个索引变量。
3.创建一个计时器事件。
4.调用函数展示图片,当一轮动图结束后重新调用。

dialog.cpp


#include "dialog.h"
#include "ui_dialog.h"
#include <QPainter>
#include <QPixmap>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);


    resize(1024,1024);
    eventID1 =startTimer(100);
    curIndex=0;
    InitPixmap();
}


Dialog::~Dialog()
{
    delete ui;
}
void Dialog::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);
    QRect q(0,0,80,91);
    QRect q2(0,0,2*80,2*91);
    painter.drawPixmap(q2,pixmap[curIndex],q);
}
void Dialog::timerEvent(QTimerEvent* event)
{
    curIndex++;
    if(curIndex>=8)
        curIndex=0;
    repaint();
};
void Dialog::InitPixmap()
{
    for(int i=0;i<8;i++)
    {
       QString fileName =QString(":/res/1_%i.jpg").arg(i+1,2,10,QLatin1Char('0'));
       QPixmap map(fileName);
       pixmap[i]= map;
    }


}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H


#include <QDialog>


QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE


class Dialog : public QDialog
{
    Q_OBJECT
public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    void paintEvent(QPaintEvent* event);
    void timerEvent(QTimerEvent* event);
    int curIndex;
    int  eventID1;
    void InitPixmap();
private:
    QPixmap pixmap[8];
    Ui::Dialog *ui;
};
#endif // DIALOG_H

Qt实现动态图