将动画们弄到一起
一个应用通常将包含不止一个动画。例如,你可能想同时移动多个图形item也可能顺序的一个接一个的移动。
QanimationGroup的子类们(QSequentialAnimationGroup和QParallelAnimationGroup)是其它动画的容器,所以这些动画既可以并行也可以串行。QAnimationGroup是一个非属性动画的例子,但是它定期的收到时间改变的通知。这使得它可以把时间改变传输给所包含的动画们,从而控制何时播放那些动画们。
让我们看一下使用QSequentialAnimatoinGroup和QParallelAnimationGroup的代码示例。
QPushButton *bonnie = new QPushButton("Bonnie");
bonnie->show();
QPushButton *clyde = new QPushButton("Clyde");
clyde->show();
QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
// Set up anim1
QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry");
// Set up anim2
QParallelAnimationGroup *group = new QParallelAnimationGroup;
group->addAnimation(anim1);
group->addAnimation(anim2);
group->start();
一个并行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();
QsequentialAnimationGroup顺序的播放它的动画们。它在上一个完成时按顺序播放下一个。
既然一个动画组本就是一个动画类,你可以把它添加到其它组中。如此,你可以建立起一个动画树。
动画和状态当使用状态机,我们可以使用一个QSignalTransition或QEventTransition类在状态转换时连接一个或多个动画。这些类都是从QAbstractTransition派生的,它们定义了简易的函数addAnimation(),使得能够添加一个或多个动画,在状态转换时启动这些动画。
我们还可能连接属性与状态,而不是手动设置开始与结束值。下面是完整的代码,演示了动画一个QPushButton的geometry属性。
QPushButton *button = new QPushButton("Animated Button");
button->show();
QStateMachine *machine = new QStateMachine;
QState *state1 = new QState(machine);
state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
machine->setInitialState(state1);
QState *state2 = new QState(machine);
state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
QSignalTransition *transition1 = state1->addTransition(button,
SIGNAL(clicked()), state2);
transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
QSignalTransition *transition2 = state2->addTransition(button,
SIGNAL(clicked()), state1);
transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
machine->start();
分享到:
相关推荐
QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解QT详解
展示了Qt动画的使用,效果非常炫 详见博客:http://blog.csdn.net/caoshangpa/article/details/53964789
嵌入式QT,学习qt的好资料。嵌入式QT的详解。
Qt的动画框架是Qt4.6新添加的一个重要的特性,有了它,开发人员可以制作激动人心的动画界面,而不必局限于单调的固定窗口了,可以说,这是其它界面库少见的功能,带来的则是Qt的另一大优势。最近我花了大概三、四天...
Qt的Widget属性动画,位移、缩放、不透明度动画等,可以通过组合实现复杂效果
Qt自定义控件动画效果按钮
qt动画源代码.7z
前几天在群里看见有个小伙伴用的一款gif录屏软件有一个鼠标点击时有一个类似水滴的点击效果。于是想了想,便开始了Code。思路也很简单,就是借助Qt的动画类QVariantAnimation然后不断重绘达到点击的动画效果。
Qt的动画框架是Qt4.6新添加的一个重要的特性,有了它,开发人员可以制作激动人心的动画界面,而不必局限于单调的固定窗口了,可以说,这是其它界面库少见的功能,带来的则是Qt的另一大优势。最近我花了大概三、四天...
对应博文地址:http://blog.csdn.net/CSND_Ayo/article/details/70175385
Qt动画框架是Kinetic项目的一部分,主要目的是提供一种简单的方法用于创建动画的和平滑的GUI。通过Qt动画属性,Qt动画框架为部件和其他QObject对象的动画操作提供了非常大的自由性。Qt动画框架也能用于图形视图框架...
Qt绘制带动画的等待进度条,支持动画时长设置,简单Demo
上次发布demo虽然使用了大量的动画框架、有限状态机框架,但是仍有瑕疵。比如说在用户一直按下按键的时候角色会被“冻”住,但是角色的位置是移动的,这可能是使用QKeyEventTransition的一个副作用吧。在觉察到使用...
1、QT-侧靠动画窗口-隐藏和显示窗体 2、动画显示效果
Qt动画框架很强大,只要你想得到,它就有可能帮你实现。这一次我将抽取上一个演示程序的部分来进行介绍。这一部分我命名为“飞入 - 消失”特效,主要用在文字的显示方面,从这点上说很像PowerPoint上面特效的一种。
Qt 实现窗口大小过渡动画demo
用Qt动画机制编写的一个简单的动画程序,实现两组动画,一只小鸟和一头猪分别在窗体飞过,适合新手学习研究。
使用Qt动画机制编写的一个简单的动画程序,实现小鸟在客户区飞过,适合新手学习研究。
基于QT的忙加载动画效果,类似于网络正在加载的转圈圈效果
例子包含了VS版本以及QCreator版本,VS打开目录下.sln文件即可,QCreator打开目录下.pro文件即可,主要是对窗口的pos及新增了一个cornerOpacity属性做了动画处理,实现了窗口在鼠标进出时左右滑动,以及四个边框角的...