0
我有三個狀態s1,s2,s3和s4的狀態機。從狀態s1,s2和s3機器可以進入錯誤狀態。QStateMachine錯誤狀態
QStateMachine machine;
QState *s1 = new QState();
QState *s2 = new QState();
QState *s3 = new QState();
QFinalState *s4 = new QFinalState();
s1->addTransition(object, SIGNAL(done()), s2);
s2->addTransition(object, SIGNAL(done()), s3);
s3->addTransition(object, SIGNAL(done()), s4);
machine.addState(s1);
machine.addState(s2);
machine.addState(s3);
machine.addState(s4);
machine.setInitialState(s1);
這樣做的最好方法是什麼?我正在Google上搜索,但沒有運氣。 可以做這樣的事嗎?
QFinalState *sx = new QFinalState();
machine.addState(sx);
s1->addTransition(object, SIGNAL(error()), sx);
s2->addTransition(object, SIGNAL(error()), sx);
s3->addTransition(object, SIGNAL(error()), sx);
有時將state1,state2,state3放入一個超級狀態可能會很有用。那麼您只需添加一個從超級狀態到錯誤狀態的轉換。所有的子州也將「跟隨」這一轉變。 – 2013-04-05 14:20:34