动画框架

来源:互联网 发布:在淘宝买手机可靠吗 编辑:程序博客网 时间:2024/06/16 07:16

widget.h

#include <QWidget>#include <QPropertyAnimation>#include <QSequentialAnimationGroup>#include <QParallelAnimationGroup>namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private slots:    void on_pushButton_clicked();private:    Ui::Widget *ui;private:    QPropertyAnimation *animation;    QPropertyAnimation *animation2;    QSequentialAnimationGroup sequentialAnimationGroup;//串行动画组    QParallelAnimationGroup parallelAnimationGroup;//并行动画组};

widget.cpp

#include "widget.h"#include "ui_widget.h"#include <QStateMachine>#include <QSignalTransition>#include <QDebug>Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    //常见QPropertyAnimation对象,关联了myWidget这个窗体的几何属性    animation = new QPropertyAnimation(ui->pushButton, "geometry");    animation2 = new QPropertyAnimation(ui->pushButton_2, "geometry");    animation->setDuration(1500);//速度,越小越快    animation->setStartValue(QRect(0,0,120,30));    animation->setEndValue(QRect(150,150,120,30));    animation->setEasingCurve(QEasingCurve::Linear);//    animation->setEasingCurve(QEasingCurve::OutBounce);//outbounce有一个缓冲的现象//    animation->setEasingCurve(QEasingCurve::OutBack);//outback缓慢降落//    animation->setEasingCurve(QEasingCurve::OutCirc);//outcirc和outback差不多//    animation->setEasingCurve(QEasingCurve::OutInQuart);    animation2->setDuration(1500);    animation2->setStartValue(QRect(200,0,120,30));    animation2->setEndValue(QRect(150,180,120,30));    animation2->setEasingCurve(QEasingCurve::OutBounce);//outbounce有一个缓冲的现象    //动画组    parallelAnimationGroup.addAnimation(animation);    parallelAnimationGroup.addAnimation(animation2);}Widget::~Widget(){    delete ui;}void Widget::on_pushButton_clicked(){//    animation->start();    parallelAnimationGroup.start();}