Qt通过图片组绘制动态图片

 更新时间:2020年07月12日 11:40:55   作者:weixin_45752304  
这篇文章主要为大家详细介绍了Qt通过图片组绘制动态图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Qt通过图片组绘制动态图片的具体代码,供大家参考,具体内容如下

任务实现:

通过定时器的使用来依次调用资源文件中的静态图片文件,从而达到是图片中内容动起来的效果;

效果实现:

实现过程:

1.通过paintEvent()函数进行每一张图片的导入平铺绘制;
2.通过timerEvent()函数对每一张图片按照设定的时间进行重复的调用,从而达到动图的效果;
3.通过自定义InitPixmap()函数来对每一张图片进行初始化,将其导入到Pixmap[ 64 ]组中;

整体代码:

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;
  
  void InitPixmap();


private:


    QPixmap pixmap[64];
  Ui::Dialog *ui;
};
#endif // DIALOG_H

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(160,182);
  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>=64)
  {
    curIndex=0;
  }


  repaint();
}

void Dialog::InitPixmap()
{


  for(int i=0;i<64;i++)
  {
    QString filename = QString(":/Res/Resourse/1_%1.png").arg(i+1,2,10,QLatin1Char('0'));
    QPixmap map(filename);


    pixmap[i]=map;
  }
  
}

调用过程

1.通过InitPixmap()函数将六十四张图片保存在Pixmap数组中;
2.通过paintEvent()函数依次调用图片;
3.通过timerEvent()函数来设定调用的循环;
4在主函数中通过定时器设定调用间隔为100ms;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • C语言内存泄露很严重的解决方案

    C语言内存泄露很严重的解决方案

    这篇文章主要介绍了C语言内存泄露很严重的解决方案,预防内存泄漏问题有多种方法,比如加强代码检视、工具检测和内存测试等,下面文章总结内容需要的小伙伴可以参考一下
    2022-05-05
  • 二叉树入门和刷题详解

    二叉树入门和刷题详解

    这篇文章主要介绍了二叉树入门和刷题详解的相关资料,需要的朋友可以参考下
    2023-07-07
  • 详解QML 调用 C++ 中的内容

    详解QML 调用 C++ 中的内容

    这篇文章主要介绍了QML 怎么调用 C++ 中的内容,这里主要是总结一下,怎么在 QML 文件中引用 C ++ 文件里定义的内容,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C语言实现合式公式的判断示例

    C语言实现合式公式的判断示例

    这篇文章主要介绍了C语言实现合式公式的判断示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C语言实现无规律数据加密、解密功能

    C语言实现无规律数据加密、解密功能

    这篇文章主要为大家详细介绍了C语言实现无规律数据加密、解密功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Qt物联网管理平台之实现自动清理早期数据功能

    Qt物联网管理平台之实现自动清理早期数据功能

    随着时间的增加,存储的历史记录也在不断增加,如果设备数量很多,存储间隔很短,不用多久,数据库中的记录就非常多,至少是百万级别起步,而且有些用户还是需要存储每一次的采集的数据。本文将利用Qt实现自动清理早期数据,需要的可以参考一下
    2022-07-07
  • C++中fork函数的使用及原理

    C++中fork函数的使用及原理

    这篇文章主要介绍了C++中fork函数的使用及原理,在C++中,fork函数用于创建一个新的进程称为子进程,该进程与原始进程几乎完全相同,需要的朋友可以参考下
    2023-05-05
  • Linux中利用c语言删除某个目录下的文件

    Linux中利用c语言删除某个目录下的文件

    这篇文章主要给大家介绍了Linux中利用c语言删除某个目录下文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++实现ETW进行进程变动监控详解

    C++实现ETW进行进程变动监控详解

    ETW提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制。为开发者提供了一套快速、可靠、通用的一系列事件跟踪特性。本文将利用ETW进行进程变动监控,需要的可以参考一下
    2022-07-07
  • 浅谈C++中thread库join和detach的区别

    浅谈C++中thread库join和detach的区别

    这篇文章主要为大家介绍了C++中thread库join和detach的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11

最新评论