【Qt动画框架】
来源:互联网 发布:胡歌车祸知乎 编辑:程序博客网 时间:2024/05/22 00:10
虽然现在大多数项目的动画都是用QML在做了,反正了解了解也没什么坏处,或许以后也用得到。
一 Qt动画框架
缺少一张图。。。公司网速太慢,传不上去。
(其实也就是Qt动画框架类,了解即可)
Qt动画框架类
QAbstractAnimation 所有动画类的基类
QAnimationGroup 动画容器类的抽象基类 (记忆一下,挺重要)
——QParallelAnimationGroup 并行动画容器 (多个动画同时运行)
——QSequentialAnimationGroup 串行动画容器 (动画一个接一个的运行)
QEasingCurve 动画控制的缓和曲线类(动画的运行方式(参考手机界面弹出方式))
QPauseAnimation 对象暂停延时
QPropertyAnimation Qt动画属性操作(重要,用于同QObject的属性通信(比如widget的一些大小和坐标))
QTimeLine 动画控制的时间片类
QVariantAnimation 动画类的抽象基类
Qt动画的例子
这里就不多说废话了,直接上例子,看看里面的一些方法和机制
(也都是网上常有的一些例子)
1.窗口的移动
**这里就看看这几个方法的使用
.setDuration
.setStartValue
.setEndValue**
//创建一个按钮 QPushButton button("Animated Button"); button.show();//创建一个动画的属性对象(该动画,基于button) QPropertyAnimation animation(&button, "geometry"); //关于这个构造函数,我已开始有很多问题 //第一个参数,哪个控件 //第二个参数,是该控件的某个属性(动画也就是基于该属性的变化) animation.setDuration(10000); //设置动画的持续时间————动画从开始到结束的时间 animation.setStartValue(QRect(0, 0, 150, 50)); //设置起始位置 animation.setEndValue(QRect(250, 250, 100, 30)); //设置结束位置 animation.start();
2.窗口的移动—升级1
**主要看看这个方法的使用
.setKeyValueAt**
QPushButton button("Animated Button");button.show();QPropertyAnimation animation(&button, "geometry");animation.setDuration(10000); //动画设置10sanimation.setKeyValueAt(0, QRect(0, 0, 100, 30));animation.setKeyValueAt(0.8, QRect(250, 250, 100, 30));animation.setKeyValueAt(1, QRect(0, 0, 100, 30)); //前8s 向右下移动 //后2s 向左上移动animation.start();
3.窗口的移动—升级2
**主要关注这些方法的使用
.setEasingCurve**
QPushButton button("Animated Button");button.show();QPropertyAnimation animation(&button, "geometry");animation.setDuration(3000);animation.setStartValue(QRect(0, 0, 100, 30));animation.setEndValue(QRect(250, 250, 100, 30));animation.setEasingCurve(QEasingCurve::OutBounce); //控制移动的轨迹(回弹)animation.start();
4.窗口的移动—升级3
多个动画窗口,这里就要注意
QSequentialAnimationGroup
QParallelAnimationGroup
这两个类的使用
并行动画
QPushButton *bonnie = new QPushButton("Bonnie");bonnie->show();QPushButton *clyde = new QPushButton("Clyde");clyde->show();QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry"); // 这里的动画是基于bonnie的QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry"); //这里的动画是基于clyde的QParallelAnimationGroup *group = new QParallelAnimationGroup; //这里注意啦:这就是并行输出,同时的group->addAnimation(anim1);group->addAnimation(anim2);group->start();
串行动画
QPushButton button("Animated Button");button.show();QPropertyAnimation anim1(&button, "geometry");anim1.setDuration(3000);anim1.setStartValue(QRect(0, 0, 100, 30));anim1.setEndValue(QRect(500, 500, 100, 30));QPropertyAnimation anim2(&button, "geometry");anim2.setDuration(3000);anim2.setStartValue(QRect(500, 500, 100, 30));anim2.setEndValue(QRect(1000, 500, 100, 30));QSequentialAnimationGroup group; //这里就是串行啦group.addAnimation(&anim1);group.addAnimation(&anim2);group.start();
这里遗留一个问题,就是状态机 和 动画的协作。。。下章写。。。
- Qt动画框架
- QT动画框架
- Qt动画框架
- Qt动画框架详解
- QT动画框架
- Qt动画框架
- Qt动画框架详解
- Qt 动画框架
- Qt动画框架
- Qt动画框架
- 【Qt动画框架】
- Qt之动画框架
- QT动画框架
- Qt动画框架
- Qt动画框架
- Qt动画框架的实现
- Qt动画框架--原创翻译
- Qt动画框架的学习
- 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS
- OpenCV的machine learning模块使用
- 求一千万以内的素数的比较高效的方法,
- mybatis 如何使用乐观锁
- 解决简单的键盘遮挡问题
- 【Qt动画框架】
- 解决点击空白关闭popupWindow方法过时问题
- Eclipse中Outline里各种图标的含义
- 静田1
- Java基础知识更新前言
- P2P 之 UDP穿透NAT的原理与实现
- Fiddler安装配置方法抓取移动设备接口信息
- iOS之NSNotificationCenter的使用
- DEVICE_ATTR分析