串行:一个图形项连续多次运动
#include <QApplication>
#include <QPushButton>
#include <QPropertyAnimation>
#include <QSequentialAnimationGroup>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button("Animated Button");
button.show();
QPropertyAnimation *animation_1 = new QPropertyAnimation(&button, "geometry");//为部件的geometry属性创建动画
animation_1->setDuration(2000);
animation_1->setStartValue(QRect(250,0, 120, 30));
animation_1->setEndValue(QRect(250,300, 120, 30));
animation_1->setEasingCurve(QEasingCurve::OutBounce);
QPropertyAnimation *animation_2 = new QPropertyAnimation(&button, "geometry");
animation_2->setDuration(1000);
animation_2->setStartValue(QRect(250,300, 120, 30));
animation_2->setEndValue(QRect(250,300, 200, 60));
animation_2->setEasingCurve(QEasingCurve::OutBounce);
QSequentialAnimationGroup group;
group.addAnimation(animation_1);
group.addAnimation(animation_2);
group.start();
return a.exec();
}
并行:多个图形项同时进行运动
#include <QApplication>
#include <QPushButton>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button_1("Animated Button");
button_1.show();
QPushButton button_2("Animated Button");
button_2.show();
QPropertyAnimation *animation_1 = new QPropertyAnimation(&button_1, "geometry");//为部件的geometry属性创建动画
animation_1->setDuration(2000);
animation_1->setStartValue(QRect(250,0, 120, 30));
animation_1->setEndValue(QRect(250,300, 120, 30));
animation_1->setEasingCurve(QEasingCurve::OutBounce);
QPropertyAnimation *animation_2 = new QPropertyAnimation(&button_2, "geometry");
animation_2->setDuration(1000);
animation_2->setStartValue(QRect(400,300, 120, 30));
animation_2->setEndValue(QRect(400,300, 200, 60));
animation_2->setEasingCurve(QEasingCurve::OutBounce);
QParallelAnimationGroup group;
group.addAnimation(animation_1);
group.addAnimation(animation_2);
group.start();
return a.exec();
}