QPushButton *button = new QPushButton(“Animated Button”);
QState *state1 = new QState(machine);
state1->assignProperty(button, “geometry”, QRect(0, 0, 150, 30));
QState *state2 = new QState(machine);
state2->assignProperty(button, “geometry”, QRect(250, 250, 150, 30));
transition1->addAnimation(new QPropertyAnimation(button, “geometry”));
transition2->addAnimation(new QPropertyAnimation(button, “geometry”));
#include <QApplication>
#include <QPushButton>
#include <QStateMachine>
#include <QState>
#include <QSignalTransition>
#include <QPropertyAnimation>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
QPushButton *button = new QPushButton(“Animated Button”);
button->show();
QStateMachine *machine = new QStateMachine;
//QState *state1 = new QState(machine->rootState());
QState *state1 = new QState(machine);
state1->assignProperty(button, “geometry”, QRect(0, 0, 150, 30));
machine->setInitialState(state1);
//QState *state2 = new QState(machine->rootState());
QState *state2 = new QState(machine);
state2->assignProperty(button, “geometry”, QRect(250, 250, 150, 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();
app.exec();
}//这个代码来自于Qt-4.6 Assistant帮助的Animation索引,原代码的rootState()函数是没有的,应该算是bug了吧:)