Qt实现动画的2种方式

news2024/12/24 8:37:11

由于我之前是写java的所以在学习Qt的时候感觉会有点熟悉,因为Qt就是 用c++写,而java底层也是c++实现的

先看效果:
在这里插入图片描述

一、使用QMovie

这种方式我目前是用来加载gif图的,很简单噢,只不过我是加载的本地的路径,如果是需要加载资源文件里面的路径我试了一下不知道为啥不成功,路过知道的道友指点一下;

void OnlyTest::slotTestAnim()
{
    QMovie *movie = new QMovie("C:/Users/qc267/Desktop/pics/girl.gif");
    bool isResValid = movie->isValid();
    qDebug()<<" movie.isValid()  = "<<isResValid;
    if(!isResValid){
        return;
    }
    m_anim_label->setMovie(movie);//用一个Qlable来装就行拉
    movie->start();//开始动画~
}
二、使用样式表

这种方式就很简单咯,就是循环该背景图片


void OnlyTest::initTimer(){
    //创建定时器
    testTimer=new QTimer(this);
    resize(500,500);
    eventID=startTimer(500);
    curIndex=0;
    InitPixmap();
    //将定时器超时信号与槽练习起来
    QObject::connect(testTimer,SIGNAL(timeout()),this,SLOT(slotTestTimer()));
}

void OnlyTest::timerEvent()
{
    curIndex++;//图片标号加
    curIndex = curIndex%39;
    repaint();
}

QList<QString> imageResList;
void OnlyTest::InitPixmap()
{
    for (int i = 0; i < 39; ++i) {
        //获取图片资源路径
        arg函数将数字插入到字符串中。这个函数接受多个参数来指定插入的格式和值。
        //i+1: 表示要插入的数字,i是一个变量,它的值加1。
        //2: 表示插入的数字的宽度为2位。如果插入的数字不足2位,则在前面用0进行填充。
        //10: 表示插入的数字是十进制的。
        //QLatin1Char('0'): 表示使用字符'0'作为填充的字符,比如数字为1的时候,填充后就是01。
        QString str = QString(":/res/C:/Users/qc267/Desktop/pics/allpics/%1").arg(i+1,2,10,QLatin1Char('0'));
        qDebug()<<"str = "<<str;
        imageResList.append(str);
    }
}

void OnlyTest::slotTestTimer()
{
    QPushButton* m_anim_content;
    m_anim_content  = new QPushButton("",this);
    m_anim_content->setFixedSize(769,472);
    m_vboxlayout->addWidget(m_anim_content);//我是用的一个VBoxLayout来装的pushbutton,直接用ui设计器来写的话就不用这步了
    //开始运行定时器,时间间隔为1000ms
    testTimer->start(100);

    QString mUrl = imageResList[curIndex];
    qDebug()<<"timer running curIndex = "<< curIndex<<",url = "<<mUrl;
    QString bgUrl =QString("background-image:url(%1)").arg(mUrl);
    m_anim_content->setStyleSheet(QString(bgUrl));
    timerEvent();
}

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

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

相关文章

【NSX-T】7. 搭建NSX-T环境 —— 部署和配置 Edge Cluster

目录 7. 部署和配置 Edge Cluster7.1 配置 Edge 节点&#xff08;1&#xff09;Name and Description&#xff08;2&#xff09;Credentials&#xff08;3&#xff09;Configure Deployment&#xff08;4&#xff09;Configure Node Settings&#xff08;5&#xff09;Configur…

APM固件编译和仿真

事情起因 主要想对无人机APM固件进行仿真的算法验证&#xff0c;因实际飞行的过程实际验证太浪费飞机了&#xff0c;所以就先试用仿真对算法进行仿真开发。 一&#xff0c;环境搭建 环境搭建我建议参考官方英文教程&#xff0c;英文教程写的比较全&#xff0c;不懂可以自己使…

使用Python Scrapy设置代理IP的详细教程

目录 前言 一、代理IP的作用和原理 二、Scrapy框架中设置代理IP的方法 步骤1&#xff1a;安装依赖库 步骤2&#xff1a;配置代理IP池 步骤3&#xff1a;创建代理IP中间件 步骤4&#xff1a;激活代理IP中间件 步骤5&#xff1a;运行爬虫程序 三、代码示例 四、常见问题…

数字化医疗新篇章:构建智能医保支付购药系统

在迎接数字化医疗时代的挑战和机遇中&#xff0c;智能医保支付购药系统的建设显得尤为重要。本文将深入介绍如何通过先进的技术实现&#xff0c;构建一套智能、高效的医保支付购药系统&#xff0c;为全面建设健康中国贡献力量。 1. 引言 随着医疗科技的飞速发展&#xff0c;…

「Verilog学习笔记」交通灯

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule triffic_light(input rst_n, //异位复位信号&#xff0c;低电平有效input clk, //时钟信号input pass_request,output wire[7:0]clock,output reg…

如何使用示波器探头对被测电路进行检测

对电路信号进行检测之前首先要知道被测电路是什么电路&#xff0c;被测信号是什么信号。盲目地测试或者使用不正确的测量方法&#xff0c;有可能得到错误的波形甚至损坏仪器危及安全。 1、什么是差分信号&#xff1f;什么是单端信号&#xff1f; 差分传输是一种信号传输的技术…

OpenHarmony - 应用开发入门指南

一、了解OpenHarmony OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目, 目标是面向全场景、全连接、全智能时代, 搭建一个智能终端设备操作系统的框架和平台, 促进万物互联产业的繁荣发展。 开放原子开源基金会&#xff1a; 由阿里巴巴、百度、华…

前置接口数据引用指南:自动化测试流程优化技巧

当进行 自动化测试 编排时&#xff0c;测试步骤间的数据传递是至关重要的。 在传统的方式中&#xff0c;一般通过复杂的脚本配置&#xff0c;或者手动复制这些数据&#xff0c;然后再慢慢地粘贴到每个需要它们的地方&#xff0c;以此来实现接口之间的参数传递。这种方式往往效…

openwrt 搭建web

折腾 软路由 有几年了&#xff0c;最近试了下 移动的 IPV6, 既然可以拿到 公网的 IPV6&#xff0c; 所以想折腾下, 经过不懈努力 实现了&#xff1a;通过 ipv4/ipv6 地址访问我的 web站点 (白飘不花钱的方式) 1 动态DNS 折腾 DDNS 无非是想 白飘 公网IP&#xff0c;但是 仅仅…

力扣题:数字与字符串间转换-12.25

力扣题-12.25 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;481. 神奇字符串 解题思想&#xff1a;首先将字符串构建出来&#xff0c;然后进行遍历即可 class Solution(object):def magicalString(self, n):""":type n: int:rty…

微信小程序校园跑腿系统怎么做,如何做,要做多久

​ 在这个互联网快速发展、信息爆炸的时代&#xff0c;人人都离不开手机&#xff0c;每个人都忙于各种各样的事情&#xff0c;大学生也一样&#xff0c;有忙于学习&#xff0c;忙于考研&#xff0c;忙着赚学分&#xff0c;忙于参加社团&#xff0c;当然也有忙于打游戏的&#x…

arcgis javascript api4.x加载天地图cgs2000坐标系

需求&#xff1a;arcgis javascript api4.x加载天地图cgs2000坐标系 效果&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

别小看它!现货黄金趋势通道的作用

在现货黄金市场中&#xff0c;我们对趋势通道的熟悉程度不如趋势线。实际上&#xff0c;趋势通道是从趋势线演化而来的&#xff0c;没有趋势线就没有趋势通道。然而很多人不重视趋势通道&#xff0c;认为它只是趋势线的附庸&#xff0c;下面我们就来讨论一下趋势通道的作用。 为…

现控散落知识点梳理【自用/最新】

这里写目录标题 悬而未决之谜✅结合能控分解思考&#xff0c;非奇异线性变换会不会导致某变量的可控可观性发生变化&#xff1f;✅如图所示与时域结合时&#xff0c;传递函数是开环or闭环&#xff1f;✅对于一般状态&#xff0c;给出ABC&#xff0c;怎么判断每个变量的能控能观…

Python入门必看,python语言特点及差别

文章目录 前言一、高级语言分类二、认识Python三、Python 解释器总结Python技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学习视频5、实战案例6、清华编程大佬出品《漫画看学Python》7、Python副业兼职与全职路线 前言 Python (发音:[ paiθ(ə) n; …

Echarts自定义样式实现3D柱状图-长方体-圆柱体,两种样式

Echarts自定义样式实现3D柱状图-长方体-圆柱体&#xff0c;两种样式 效果图代码series配置项目 效果图 长方体 柱状体 代码 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cbar3d-dataset&gl1 --> <!DOCTYPE html> <html lang…

手撕分布式缓存---多节点的调取

经过上一个章节的学习&#xff0c;我们已经知晓了如何搭建了HTTP Server&#xff0c;通过HTTP协议与我们定义的路由&#xff0c;我们可以远程访问这个节点&#xff1b;基于这一点&#xff0c;我们可以部署多台实现了HTTP的缓存服务从而实现分布式的特性。这一章节我们要基于此背…

win环境下启动kafka Port already in use: 6688; nested exception is

背景 zk启动成功后&#xff0c;接下来启动kafka&#xff0c;再启动kafka后一直说端口被占用。 端口占用解决办法: netstat -aon|findstr 9092 taskkill -f -pid 7780 杀掉后&#xff0c;再次启动kafka时&#xff0c;问题并未解决 后来修改了批处理文件kafka-run-class.bat中…

验证码:防范官网恶意爬虫攻击,保障用户隐私安全

网站需要采取措施防止非法注册和登录&#xff0c;验证码是有效的防护措施之一。攻击者通常会使用自动化工具批量注册网站账号&#xff0c;以进行垃圾邮件发送、刷量等恶意活动。验证码可以有效阻止这些自动化工具&#xff0c;有效防止恶意程序或人员批量注册和登录网站。恶意程…

RK3568 android11 调试mipi摄像头 gc2093

一&#xff0c;摄像头简介 GC2093是一个高质量的1080P CMOS图像传感器&#xff0c;用于安全相机产品、数码相机产品和手机相机应用程序。包含了一个1920H x 1080V像素阵列、片上10位ADC和图像信号处理器。高性能和低功耗功能的全面集成使GC2093最适合设计&#xff0c;减少了实…