学习笔记(1):Qt 动画框架初识

来源:互联网 发布:cp雾化器二代做芯数据 编辑:程序博客网 时间:2024/05/01 16:17

首先是一段废话。 一直以来都想要写点东西记录自己的学习历程,好知道自己到底学到了什么?  可是太懒了,曾经写过几篇后来就被渐渐扼杀在摇篮里了。 现在回想起来对那些文章的内容还记忆深刻。所以我相信通过写博客总结自己的学习是非常有益的。

言归正传,今天学习的内容是Qt动画简介。

先来点科普,传说Qt的动画框架相当复杂, 

基本理论是基于David Harel的有限状态图(finite Statechart)。 

                执行语句则使用SCXML(State Chart XML,状态图XML)。

                框架建立在QObject和Qt属性系统的基础之上。


最简单的动画实现就是为QObject创建一个QPropertyAnimation(属性动画)。  然后为动画设置持续时间、初始值和最终值等参数。

例:

    QWidget* w = new QWidget(this); //假设this是一个QWidget。 在一个Widget中创建一个小Widget    QPropertyAnimation* animation = new QPropertyAnimation(w,"pos",this);//创建一个属性动画, 动画的目标是w  属性是位置    animation->setDuration(10000);//设置持续时间为10s    animation->setEasingCurve(QEasingCurve::InOutBack);//设置插值方法,通俗的说是设置动画效果。    animation->setKeyValueAt(0,QPoint(0,0));//插值,  值是0 - 1.0之间    0值也可以用setStartValue()            animation->setKeyValueAt(1.0,QPoint(100,100));    animation->start(QAbstractAnimation::DeleteWhenStopped); //启动动画,参数是动画删除策略。 默认是KeepWhenStopped(结束时不删除)。




0 0