首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStateMachine错误状态

QStateMachine错误状态
EN

Stack Overflow用户
提问于 2013-03-15 23:51:20
回答 1查看 654关注 0票数 0

我有三个状态的状态机s1,s2,s3和s4。从状态s1、s2和s3机器可以进入错误状态。

代码语言:javascript
复制
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);

做这件事最好的方法是什么?我在谷歌上找过了,但没找到。做这样的事情可以吗?

代码语言:javascript
复制
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 );
EN

回答 1

Stack Overflow用户

发布于 2013-03-17 03:10:35

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15436679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档