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

相关文章

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

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.