s1 = new QState(&machine);
s2 = new QState(&machine);
s3 = new QState(&machine);
s1->assignProperty(ui->w,"widgetWidth",200);
s2->assignProperty(ui->w,"widgetWidth",300);
s3->assignProperty(ui->w,"widgetWidth",400);
QSignalTransition * signalTransitionS1 = s1->addTransition(ui->btn,&QPushButton::clicked,s2);//按钮发送clicked信号时切换状态
QSignalTransition * signalTransitionS2 = s2->addTransition(ui->btn,&QPushButton::clicked,s3);
QSignalTransition * signalTransitionS3 = s3->addTransition(ui->btn,&QPushButton::clicked,s1);
machine.setInitialState(s1);
machine.start();
状态机使用动画:
QPropertyAnimation * animation = new QPropertyAnimation(ui->w, "widgetWidth");
animation->setDuration(1000);
signalTransitionS1->addAnimation(animation);
signalTransitionS2->addAnimation(animation);
signalTransitionS3->addAnimation(animation);