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);
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 그것을 위해 인터넷 검색을하고 있었지만 행운은 없었다. 이런 식으로해도 괜찮습니까? 그것이 작동처럼
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을 하나의 수퍼 상태로 만드는 것이 유용 할 수 있습니다. 수퍼 상태에서 오류 상태로 한 전환을 추가하기 만하면됩니다. 모든 하위 주들도이 전환을 "따라 가게됩니다". –