• QPropertyAnimation Class 官方英文文档【点击前往
  • QPropertyAnimation Class 中文译文文档【点击前往
 

简介

QPropertyAnimation Class 是一个控制动画效果的类,诞生自 Qt 4.6 版本。 该类继承自 QVarianAnimation,并支持其它基类相同的动画类,例如:QAnimationGroup 动画组类,该类仅支持继承自 QObject 类的窗口部件。

以例代劳

用例子来讲述各个功能,直观,立竿见影。

头文件

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5. class MainWindow;
  6. }
  7. class MainWindow : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit MainWindow(QWidget *parent = 0);
  12. ~MainWindow();
  13. private:
  14. Ui::MainWindow *ui;
  15. };
  16. #endif // MAINWINDOW_H

cpp文件

  1. #include <QPropertyAnimation>
  2. #include "mainwindow.h"
  3. #include "ui_mainwindow.h"
  4. MainWindow::MainWindow(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::MainWindow)
  7. {
  8. ui->setupUi(this);
  9. /*  声明动画类,并将控制对象 this (this一定是继承自QObject的窗口部件)  以及属性名 "geometry" 传入构造函数  */
  10. QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");
  11. /*  设置动画持续时长为 2 秒钟  */
  12. animation->setDuration(2000);
  13. /*  设置动画的起始状态 起始点 (1,2)  起始大小 (3,4)  */
  14. animation->setStartValue(QRect(1, 2, 3, 4));
  15. /*  设置动画的结束状态 结束点 (100,200)  结束大小 (300,400)  */
  16. animation->setEndValue(QRect(100, 200, 300, 400));
  17. /*  设置动画效果  */
  18. animation->setEasingCurve(QEasingCurve::OutInExpo);
  19. /*  开始执行动画 QAbstractAnimation::DeleteWhenStopped 动画结束后进行自清理(效果就好像智能指针里的自动delete animation) */
  20. animation->start(QAbstractAnimation::DeleteWhenStopped);
  21. }
  22. MainWindow::~MainWindow()
  23. {
  24. delete ui;
  25. }
 
QPropertyAnimation 声明的时候
可以传入的属性分别有  pos(位置)、windowOpacity(透明度)
 
位置示例
 
  1. void OEasyWebNotice::onShow() {
  2. QRect rect = QApplication::desktop()->availableGeometry();
  3. const int &endy = rect.height() - height();
  4. QPropertyAnimation *animation= new QPropertyAnimation(this,"pos");
  5. animation->setDuration(2000);
  6. animation->setStartValue(QPoint(rect.width() - width(), rect.height()));
  7. animation->setEndValue(QPoint(rect.width() - width(), endy));
  8. animation->setEasingCurve(QEasingCurve::OutCubic);
  9. connect(animation, SIGNAL(finished()),
  10. this, SLOT(animationFinished()));
  11. show();
  12. animation->start(QAbstractAnimation::DeleteWhenStopped);
  13. }
 
透明度示例
 
  1. void OEasyWebNotice::onClose(void) {
  2. disconnect(closeButton_.get(),SIGNAL(clicked()),
  3. this, SLOT(onClose()));
  4. QPropertyAnimation* animation = new QPropertyAnimation(this, "windowOpacity");
  5. animation->setDuration(1000);
  6. animation->setStartValue(1);
  7. animation->setEndValue(0);
  8. animation->setEasingCurve(QEasingCurve::InCirc);
  9. connect(animation, SIGNAL(finished()),
  10. this, SLOT(deleteLater()));
  11. show();
  12. animation->start(QAbstractAnimation::DeleteWhenStopped);
  13. }
 
 

关于 QPropertyAnimation 我为大家推荐一个我写的项目

QPropertyAnimation 几行代码快速制作流畅的动画效果的更多相关文章

  1. Photoshop将普通照片快速制作二次元漫画风格效果

    今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...

  2. window.requestAnimationFrame()的使用,处理更流畅的动画效果

    https://blog.csdn.net/w2765006513/article/details/53843169 window.requestAnimationFrame()的使用 2016年12 ...

  3. 3行代码快速实现Spring Boot Oauth2服务

    这里的3行代码并不是指真的只需要写3行代码,而是基于我已经写好的一个Spring Boot Oauth2服务.仅仅需要修改3行数据库配置信息,即可得到一个Spring Boot Oauth2服务. 项 ...

  4. 利用CSS3制作淡入淡出动画效果

    CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致. 利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态 ...

  5. Grid布局20行代码快速生成瀑布流

    网格布局 Grid 布局,好用又简单,至少比 Flex 要人性化一点,美中不足就是浏览器支持度差点. DOM结构 中间夹层为了后续拓展. CSS .grid { display: grid; grid ...

  6. js 3行代码,最简易实现div效果悬浮

    简易实现浮动效果的首要因素是:获取滚动条距离浏览器顶部的距离,下面直接贴代码: <!DOCTYPE html> <html> <head> <meta cha ...

  7. css制作简单loading动画效果【css3 loading加载动画】

    曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...

  8. jQuery 代码的层定位滑动动画效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 1行代码为每个Controller自定义“TabBar”-b

    这篇文章大致会带你实现以下的功能,废话少说,先看东西: JPNavigationController.gif Q&A:Demo里都有那些东西? 01.关于自定义导航栏 01.第一个控制器的导航 ...

随机推荐

  1. 纯CSS绘制的三角形箭头图案【原创】

    参考:http://www.webhek.com/css-triangles/ 使用上下左右的三角形箭头标志,直接用css即可完成,直接附上代码. css: div#up { width: 0px; ...

  2. C++/C, Java学习资料

    C++11系列-什么是C++11 [Java]Final 与 C++ Const的区别 C++开发者都应该使用的10个C++11特性 史上最明白的 NULL.0.nullptr 区别分析 C语言堆栈入 ...

  3. CodeForces - 617E XOR and Favorite Number 莫队算法

    https://vjudge.net/problem/CodeForces-617E 题意,给你n个数ax,m个询问Ly,Ry,  问LR内有几对i,j,使得ai^...^ aj =k. 题解:第一道 ...

  4. 冒泡排序之python

    冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工 ...

  5. linux:查看以及管理进程

    学习笔记内容概要 进程查看的命令:top,ps,pstree 进程管理的命令:kill,nice,renice 查看进程: 一.top工具 top 工具是我们常用的一个查看工具,能实时的查看我们系统的 ...

  6. iOS UITextField实时监听获取输入内容,中文状态去除预输入拼音

    http://blog.csdn.net/cse110/article/details/51360796 - (void)textFieldDidChange:(UITextField *)textF ...

  7. 新入职如何快速去了解一个Javaweb项目!

    1.从代码结构入手,搞清楚Java源码所在目录以及jsp代码所在目录. 2.从Web.xml入手,搞清楚首页,上下文及配置情况. 3.从lib目录里初步查看系统使用的框架和工具包. 4.从页面大体浏览 ...

  8. 2018/03/23 每日一个Linux命令 之 sed

    官方定义: Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等 ...

  9. 泛型T和通配符?的区别

    这里如果是泛型T的话,那么创建该类的时候就需要指定类型,而通配符不需要.

  10. HTTP API响应数据规范整理

    概述 本文档为本人对长期开发API接口所整理的经验总结,如有不完善或不合理的地方,望各位多提意见. 文档目的为规范服务器端API接口,便于服务器端与客户端代码重用.服务器端和客户端可根据实际所定义规范 ...