0

s1、s2、s3、s4 の 3 つの状態を持つステート マシンがあります。状態 s1、s2、および s3 から、マシンはエラー状態に入ることができます。

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 );
4

1 に答える 1

1
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 );

うまくいきそうです、はい。すべての状態に対して addTransition() を呼び出さなければならないのは少し面倒なので、親状態を追加することですべての状態をグループ化できます。その場合、親で必要なエラー遷移は 1 つだけです。

于 2013-03-16T19:10:34.727 に答える