状态机框架

来源:互联网 发布:软件可靠性方法 编辑:程序博客网 时间:2024/05/21 04:40

widget.h

#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private:    Ui::Widget *ui;};

widget.cpp

#include "widget.h"#include "ui_widget.h"#include <QStateMachine>#include <QSignalTransition>#include <QDebug>#include <QPropertyAnimation>Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    //状态机,本质也是通过动画    QStateMachine *machine = new QStateMachine;    //QState *state1 = new QState(machine->rootState());    QState *state1 = new QState(machine);    state1->assignProperty(ui->pushButton, "geometry", QRect(50, 50, 50, 50));    machine->setInitialState(state1);    //QState *state2 = new QState(machine->rootState());    QState *state2 = new QState(machine);    state2->assignProperty(ui->pushButton,"geometry", QRect(200, 200, 100, 100));    QSignalTransition *transition1 = state1->addTransition(ui->pushButton, SIGNAL(clicked()),state2);    transition1->addAnimation(new QPropertyAnimation(ui->pushButton, "geometry"));    QSignalTransition *transition2 = state2->addTransition(ui->pushButton, SIGNAL(clicked()),state1);    transition2->addAnimation(new QPropertyAnimation(ui->pushButton, "geometry"));    machine->start();}Widget::~Widget(){    delete ui;}
原创粉丝点击