Qt动画中常常和状态机相互练习,那么什么是状态机呢?
网上的一些解释太高端了,不是很亲民。。。
状态机:
回想之前的动画,运行之后就开始在桌面上运动。那么有什么方法能够控制这一点呢?
比如,按下button之后,动画才出现;
我想:信号和槽应该是一种想法。。。
那么,类似于这种机制,也就是状态机啦。
例如,按钮1处于状态1下是静止的,clicked(),就切换到了状态2,这时是运转的。。。
一 状态机框架中的一些类
就看看吧,熟悉熟悉。。。
QAbstractState
QAbstractTransition
QEventTransition
QFinalState
QHistoryState
QKeyEventTransition
QMouseEventTransition
QSignalTransition
QState
QStateMachine
QStateMachine::SignalEvent
QStateMachine::WrappedEvent
二 状态机机制原理
2.1 第一步:创建状态机
注意:QStateMachine 和 QState
//new 状态机
QStateMachine *machine = new QStateMachine;
// new 状态1
QState *state1 = new QState(machine);
// new 状态2
QState *state2 = new QState(machine);
2.2 第二步:把状态和当前的属性绑定
注意:state.assignProperty()
state1->assignProperty(button, "geometry", QRect(0, 0, 150, 30));
//状态1 —— 位置1
state2->assignProperty(button, "geometry", QRect(250, 250, 150, 30));
//状态2 —— 位置2
2.3 第三步:状态转换
注意:
QSignalTransition
.addTransition //状态转换如s1->s2,触发方式
.addAnimati