Qt的QPropertyAnimation动画框架小用.md

2024-05-12 19:48

本文主要是介绍Qt的QPropertyAnimation动画框架小用.md,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公众号:Qt那些事儿

公众号

有一天在吹逼群里,发现一个群里大佬在Steam上上架了一个游戏-秘封旅行 ~Secret Sealing Travel。

这是一个桌宠游戏。

目前采用C#编写,所以目前应该是不跨平台的。他也是C#新手,所以宠物的动画也只是一个单纯的时间戳轮训。自己自定义timer来实现动画效果。我说你可以用Qt的来实现下,大概十几行核心代码就能搞定。
所以这也是我写这篇文章的一个缘由。

代码 QPropertyAnimation

由于资源文件是png,所以这个核心代码就是三张图来回循环。
当然你可以使用QTimer定时器来搞定这件事儿,但是今天要用QPropertyAnimation

本质上就是循环渲染三张图。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接上代码
首先窗口无边框,要透明

    setAttribute(Qt::WA_TranslucentBackground, true);setWindowFlags(Qt::FramelessWindowHint);

然后声明动画类

    m_pAnimation = new QPropertyAnimation(this, "index"); //声明变量跟循环的函数 indexm_pAnimation->setDuration(1000); //一秒循环一次m_pAnimation->setLoopCount(-1); // 无线循环m_pAnimation->setStartValue(0); //起始indexm_pAnimation->setEndValue(3); // 结束index

每次都重新设置index

void MainWindow::setIndex(int index)
{m_pixIndex = index;update();
}int MainWindow::getIndex()
{return m_pixIndex;
}

将资源文件塞到一个list里,每次都渲染一张图片

    m_imgList.push_back(QImage(":/res/1.png"));m_imgList.push_back(QImage(":/res/2.png"));m_imgList.push_back(QImage(":/res/3.png"));void MainWindow::paintEvent(QPaintEvent *e)
{QPainter painter(this);painter.drawImage(rect(), m_imgList.at(getIndex()));
}

最后上一个最终效果图

视频上传不了,还是看公众号的文章吧

小结

花了不到五分钟写完了,还跨平台。

使用MSVC19编译出来Debug内存占用8M。 Qt真香。

如果使用QOpenGLWidget的话还可以以后走硬件加速。换成qml的话估计会更快吧。

代码在这里
https://github.com/CryFeiFei/Qt_Teach/tree/master/Animation

公众号:Qt那些事儿

公众号

这篇关于Qt的QPropertyAnimation动画框架小用.md的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983573

相关文章

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Qt之QMessageBox的具体使用

《Qt之QMessageBox的具体使用》本文介绍Qt中QMessageBox类的使用,用于弹出提示、警告、错误等模态对话框,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.简单介绍3.常见函数4.按钮类型(QMessage::StandardButton)5.分步骤实现弹窗6.总结1.引言

Qt中Qfile类的使用

《Qt中Qfile类的使用》很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件,本文主要介绍了Qt中Qfile类的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.QFile文件操作3.演示示例3.1实验一3.2实验二【演示 QFile 读写二进制文件的过程】4.

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类