Qt动画框架设计飞入-消失特效

2023-11-19

用Qt动画框架设计飞入-消失特效

Qt动画框架很强大,只要你想得到,它就有可能帮你实现。这一次我将抽取上一个演示程序的部分来进行介绍。这一部分我命名为“飞入 - 消失”特效,主要用在文字的显示方面,从这点上说很像PowerPoint上面特效的一种。

还是首先看看我的demo吧。下载地址:这里

原创博客,反对未经允许的转载。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8899279

下面是FlyInVanish类的部分定义:
[cpp]  view plain copy
  1. class FlyInVanishEffect: public QObject// 飞入 - 消失特效类  
  2. {  
  3.     Q_OBJECT  
  4.     Q_PROPERTY( QPointF Pos READ Pos WRITE setPos )  
  5. public:  
  6.     FlyInVanishEffect( QWidget* pWidget = 0 );  
  7.     virtual ~FlyInVanishEffect( void );  
  8.     void AddText( const QString& text );  
  9.     void RenderPixmap( QPixmap& pixmap );  
  10. signals:  
  11.     void Start( void );  
  12.     void VanishStart( void );  
  13. public slots:  
  14.     void StartEffect( void );  
  15. private slots:  
  16.     void PauseFinished( void );  
  17. private:  
  18.     void PreparePixmap( const QString& text );  
  19.   
  20.   
  21.     DECLRARE_PROPERTY_WITH_GETTERS_AND_SETTERS( QPointF, Pos )  
  22.     QStringList m_StringList;// 字符串列表  
  23.   
  24.   
  25.     // 状态机部分  
  26.     QState m_InitialState, m_MiddleState, m_FinalState;  
  27.     QStateMachine m_Machine;  
  28.   
  29.   
  30.     // 动画部分  
  31.     QPropertyAnimation m_FlyInAnim, m_RiseAnim, m_VanishAnim;  
  32.     QParallelAnimationGroup m_VanishAnimGrp;  
  33.     QTimer m_PauseTimer;  
  34.     bool m_HasFinished;  
  35.   
  36.   
  37.     // 绘图部分  
  38.     QPointF m_SavedPos;  
  39.     LinearGradient m_Gradient;  
  40.     QPixmap m_TextPixmap;  
  41.   
  42.   
  43.     // 父窗口指针  
  44.     QWidget* m_pWidget;  
  45. };  
这里我定义了三个状态和一个状态机。考虑到状态要循环切换,所以我没有使用QFinalState。而配合这些状态切换的是几个QPropertyAnimation的实例:m_FlyInAnim负责飞入,m_RiseAnim负责上升,而m_VanishAnim负责消失动画。其中m_RiseAnim和m_VanishAnim是并行进行的,所以需要一个QParallelAnimationGroup类的实例:m_VanishAnimGrp。此外我尝试了一下QPauseAnimation,似乎不能将它和其它的动画结合在一起,只能放在QSequentialAnimationGroup中,因此我没有使用这个类而是使用了一个QTimer来进行动画的延时。
其实这个特效的原理也很简单:首先维护一个字符串列表m_StringList,然后从中一个个拿出字符串,渲染成m_TextPixmap,最后对这个m_TextPixmap进行动画操作。最后LinearGradient类为了实现动画而继承自QObject和QLinearGradient,这样就有办法实现消失特效了。
在使用的时候,只要m_StringList有元素,调用StartEffect()这个函数就可以实施动画操作了。此外为了防止错误而新增了若干条判断语句,这些都在cpp文件中有所展现。详细情况请下载我的源代码。

下面是我制作的另一个程序,你可以在输入框中输入任何文字,只要按下了Enter键就可以启动动画。这里给出了演示程序和源代码。


演示程序下载地址: 这里
源代码下载地址: 这里



FROM: http://blog.csdn.net/gamesdev/article/details/8899279

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt动画框架设计飞入-消失特效 的相关文章

  • 用Calendar.getInstance()后,set月份被加一问题

    一 问题描述 今天查询一个bug发现了这个问题 使用Calendar 中的before 和after方法比较日期是否在范围内 实际与代码不符 我就去查明原因 首先说下这两个方法吧 日期1 before 日期2 第一个日期在第二个日期之前的意
  • 将 Google Kubernetes Engine (GKE) 上稳定扩散的启动时间缩短 4 倍

    Cloud Ace 是 Google Cloud 全球战略合作伙伴 在亚太地区 欧洲 南北美洲和非洲拥有二十多个办公室 Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位 并连续多次获得 Google Cloud 各类奖项
  • Flutter 安装 填坑记录

    Flutter 安装过程中遇到的问题 安装参考文档 https flutterchina club Add the flutter tool to your path 不知如何在mac中添加环境变量的解决方法参照https jingyan
  • [491]pywin32模拟鼠标键盘操作

    keybd event bVk bScan dwFlags dwExtraInfo 第一个参数 虚拟键码 键盘键码对照表见附录 第二个参数 硬件扫描码 一般设置为0即可 第三个参数 函数操作的一个标志位 如果值为KEYEVENTF EXTE
  • Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass' ...

    问题描述 这个问题产生的原因 与 office 的安装有关 参考 How to solve Unable to cast COM object of type Microsoft Office Interop Excel Applicati
  • arm鲲鹏服务器和x86区别

    华为云服务器x86计算和鲲鹏计算的区别是什么 X86和鲲鹏指的是两个系列的中央处理器架构 x86采用复杂指令集 CISC 鲲鹏采用精简指令集 RISC pc6a学习分享小白详细说明一下这2种服务器的差别 一 鲲鹏和X86处理器架构对比 1
  • R语言期末

    一 单项选择题 答题说明 每题均有 A B C D 四个备选答案 其中只有一个正确答案 将其 选出 并写在答题纸上 1 R 语言 软件 是被用于统计计算和绘图工作的一套语言和环境 是一套开源 的数据分析解决方案 最早 1995 年 是由 B
  • 代码走查(codereview)如何执行才能提升代码质量

    成功上岸 进入华为 之前花5W买的JAVA课程合集 整整420集 拿走不谢 公粮上交 手把手教学 学完即可就业 哔哩哔哩 bilibili 作为一名开发工程师 如何提升个人能力 减少bug的发生是一件非常重要的事情 它直接关系到了领导及项目
  • Cesium三维地球上添加点、线、面、文字、图标(图片)、模型等标绘

    添加标绘之前要明白一点 Cesium Entity是可以与样式化图形表示配对并定位在空间和时间上的数据对象 或者说Cesium 提供 Entity API 来绘制控件数据 所以我们添加的所有标绘都是entity Entity API简介 C
  • 【DDR3 控制器设计】(3)DDR3 的写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • 2022年数字化转型的三大基于云的驱动因素

    未来一年将标志着企业品牌 工作和生活创新的最大重置 文章来源 Venture Beat Google Cloud CTO Will Grannis 数字技术一直是并将持续是公司应对新冠疫情的背后推动力 从购物和供应链到儿童保育和工作 一切都
  • 服务器访问系统盘 数据盘,云服务器系统盘数据盘

    云服务器系统盘数据盘 内容精选 换一换 当服务器中的磁盘发生故障 或者由于人为误操作导致服务器数据丢失时 可以使用已经创建成功的备份恢复服务器 云服务器备份仅支持将服务器中的所有云硬盘作为整体进行备份和恢复 不支持对服务器中的部分云硬盘进行
  • 【Linux】网络编程 - Socket套接字/基于UDP的网络通信

    目录 一 套接字 1 什么是套接字 Socket套接字 2 套接字的分类 3 Socket套接字的常见API 二 网络字节序 1 什么是网络字节序 2 网络字节序和主机字节序的转换接口 三 IP地址形式上的转换 四 客户端的套接字不由程序员
  • Verilog HDL——Modelsim仿真

    常用testbench语法 finish 和 stop finish任务用于终止仿真并跳出仿真器 stop任务则用于中止仿真 timescale time unit time precision time unit指定计时和延时的测量单位
  • v-for中遍历多个el-select时,下拉选择框同步选择问题

    好久没写博客了 今天记录下遇到的问题 需求就是遍历生成了多个el select下拉框 但是这时候v model绑定值却出现了问题 问题复现 代码如下

随机推荐