【Qt】定时器播放多张图片,动画效果

news2024/11/19 1:52:51

1. 效果

在这里插入图片描述

2. 代码

2.1 头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void initGif(QString prefix, int sumCnt);
    void start();
    void stop();

private:
    Ui::Widget *ui;
    int curIndex;
    QString prefix;
    int sumCnt;
    int timeID;

    // QObject interface
protected:
    void timerEvent(QTimerEvent *event) override;
};
#endif // WIDGET_H

2.2 cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

	//资源文件:/img/p1 ~ :/img/p11
    initGif(":/img/p", 11);
    start();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::initGif(QString prefix, int sumCnt)
{
    this->prefix = prefix;
    this->sumCnt = sumCnt;

    //QString(this->prefix+%1.png").arg("10");
    QString fileName = this->prefix + "1" + ".png";
    ui->label->setPixmap(QPixmap(fileName));
}

void Widget::start()
{
    timeID = startTimer(100);

}

void Widget::stop()
{
    killTimer(timeID);
    QString fileName = this->prefix + "1" + ".png";
    ui->label->setPixmap(QPixmap(fileName));
}

void Widget::timerEvent(QTimerEvent *event)
{
    curIndex++;
    if(curIndex > this->sumCnt)
        curIndex = 1;

    QString fileName = this->prefix + QString("%1.png").arg(QString::number(curIndex));
    ui->label->setPixmap(QPixmap(fileName));
}


3. 参考

QT:利用计时器连续播放图片组成动图效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RPA-UiBot6.0数据采集机器人(海量信息一网打尽)内附RPA师资培训课程

前言 友友们是否曾为海量的数据信息而头疼&#xff0c;不知道如何从中精准抓取你所需的数据&#xff1f;小北的这篇博客将为你揭晓答案&#xff0c;让我们一起学习如何运用RPA数据采集机器人&#xff0c;轻松实现海量信息的快速抓取与整理&#xff0c;助力你的工作效率翻倍&…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分&#xff1a;背景 在游戏开发的世界中&#xff0c;寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架&#xff0c;它提供了一套丰富的功能&#xff0c;用于创建2D游戏、图形和交互式应用。基于流行的c…

掌握SVG基础:从零开始学习

格栅图可以实现图片的清晰显示&#xff0c;但这也意味着如果要在各种设备上使用格栅图&#xff0c;就会增加大量不同规格的格栅图&#xff0c;以适应各种尺寸的设备。这也直接导致资源文件体积的增加&#xff0c;矢量图没有这个问题。本文将SVG代码编写与即时设计工具相结合&am…

2024050401-重学 Java 设计模式《实战代理模式》

重学 Java 设计模式&#xff1a;实战代理模式「模拟mybatis-spring中定义DAO接口&#xff0c;使用代理类方式操作数据库原理实现场景」 一、前言 难以跨越的瓶颈期&#xff0c;把你拿捏滴死死的&#xff01; 编程开发学习过程中遇到的瓶颈期&#xff0c;往往是由于看不到前进…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from supermap/vue-iclient-mapboxgl; Vue.use(…

[Classifier-Free] Classifier-Free Diffusion Guidance

1、背景 1&#xff09;Classifier Guidance的问题 a&#xff09;需要额外训练一个分类器&#xff08;要基于噪声图像训练&#xff0c;因此无法用现成的预训练分类器&#xff09;&#xff0c;使得扩散模型的训练pipeline更加复杂 b&#xff09;whether classifier guidance is s…

Vue05-数据绑定

一、数据绑定 1-1、v-bind指令 1-2、v-model指令 1、单项数据绑定&#xff1a; 2、双向数据绑定 注意&#xff1a; 表单元素&#xff0c;必须要有属性&#xff1a;value&#xff01;&#xff01;&#xff01; 1-3、小结

钡铼技术BL103助力实现PLC到OPC-UA无缝转换新高度

在工业4.0的大背景下&#xff0c;信息物理系统和工业物联网的融合日益加深&#xff0c;推动了工业自动化向更高层次的发展。OPC UA作为一种开放、安全、跨平台的通信协议&#xff0c;在实现不同设备、系统间数据交换和互操作性方面扮演了核心角色。钡铼技术公司推出的BL103 PLC…

Java网络编程(上)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java文件IO&#x1f649; &#x1f439;今日诗词:来如春梦几多时&#xff1f;去似朝云无觅处&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&a…

AI教我变得厉害的思维模式01 - 成长型思维模式

今天和AI一起思考如何培养自己的成长性思维。 一一核对&#xff0c;自己哪里里做到&#xff0c;哪里没有做到&#xff0c;让AI来微调训练我自己。 成长性思维的介绍 成长性思维&#xff08;Growth Mindset&#xff09;是由斯坦福大学心理学教授卡罗尔德韦克&#xff08;Carol…

OpenWrt开启ipv6

原生版本的openwrt, 开启ipv6方法如下&#xff1a; 导航栏 网络->接口 编辑lan接口 DHCP Sever选项里 找到IPv6 Settings 选项&#xff1a; Designated master 不需要开启。RA-Service 设置为 server modeDHCPv6-Service 设置为 server mode 局域网即可确处理IPv6地址分配…

高并发短视频系统设计:架构、存储与性能优化全解

1. 系统概况与需求分析 1.1 短视频系统简介 当前短视频行业的快速发展&#xff0c;加上用户对高清、流畅观看体验的需求不断提升&#xff0c;对系统的并发处理能力、视频处理速度、存储效率等多方面都提出了极高的要求。那么&#xff0c;我们首先需要了解一个完整的短视频系统…

空间不够用了怎么办

空间告急啊哥们 整理一下清理空间有用的一些blog吧。 【linux】公共服务器如何清理过多的.cache缓存 linux根目录空间不足&#xff0c;追加空间到根目录下 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

php: centos+apache 启动php项目

指导文件 &#xff1a;PHP: Apache 2.x on Unix systems - Manual 下载路径 &#xff1a;Index of /httpd configure: error: APR not found. 解决方案&#xff1a; APR&#xff08;Apache Portable Runtime&#xff09;库。APR是Apache HTTP服务器的可移植运行时环境&…

E: 仓库 “http://download...graphics:/darktable/xUbuntu_22.04 InRelease” 没有数字签名

问题 Ubuntu22.04装了darktable软件没装好&#xff0c;已经卸载了但是没卸载干净,终端使用 sudo apt update 出现的问题&#xff1a; 解决&#xff1a; sudo nano /etc/apt/sources.list.d/*darktable*.list找到了该软件的相关仓库条目&#xff1a;直接给他注释掉就行了。

HBuilderx uniapp启动微信小程序报错[error] Error: Fail to open IDE

1、打开微信呢开发者工具&#xff0c;添加项目 创建小程序--目录&#xff08;目录选择自己小程序项目下的dist/dev/mp-weixin&#xff09;点击确定之后微信开发者工具会自己去编译&#xff0c;等待一会便好&#xff0c;查看微信开发者工具控制台是否有报错日志 如果发现[插件 w…

韩顺平0基础学Java——第17天

p342-373 上课的时候一部分在纸上写过了&#xff0c;就不在这里复盘了。 this可以调用本类的所有方法&#xff0c;super可以调用父类的非private方法 Test Demo Rose Jack John jack 重写equals方法&#xff1a; 15&#xff1a; 1.调用C的有参构造器 2.进入B的有参构造器…

【C++面试50题】

以下是针对C程序员面试可能遇到的一些问题&#xff0c;涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么&#xff1f; 2. 什么是构造函数和析构函数&#xff1f;它们何时被调用&#xff1f; 3. 什…

【qt】多窗口开发

多窗口开发 一.应用场景二.嵌入的窗口1.设计Widget窗口2.创建窗口3.添加窗口4.总代码 三.独立的窗口1.创建窗口2.显示窗口 四.总结 一.应用场景 多窗口,顾名思义,有多个窗口可以供我们进行操作! 截个小图,你应该就知道了 OK,话不多说,直接开干,先来设计我们的主窗口 需要蔬菜…

场外个股期权标的有哪些?

今天带你了解场外个股期权标的有哪些&#xff1f;场外个股期权是一种金融衍生品&#xff0c;它不在交易所内进行交割&#xff0c;而是在交易所以外的场所进行交易的股票期权合约。 场外个股期权标的有哪些&#xff1f; 场外个股期权的标的通常包括A股市场上的融资融券标的&…