У меня есть машина состояний с тремя состояниями 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 в одно супер-состояние. то вы просто добавляете один переход из супер состояния в состояние ошибки. все субсостояния будут «следовать» этому переходу тоже. –