关于Qt状态机的记录

本文详细介绍了Qt中的QState和QStateMachine类在状态管理中的应用。QState支持 ExclusiveStates 和 ParallelStates 两种子状态关系,QStateMachine基于状态图实现分层有限状态机。转换(Transition)由事件触发,可以包含动作。文章还探讨了历史状态、复合状态、平行状态和错误状态等概念,提供了一种有效管理复杂状态逻辑的方法。
摘要由CSDN通过智能技术生成
QState类为QStateMachine类提供状态。一个QState对象可以有子状态,也可以有转向其他状态的转换。状态的ChildMode属性用来设置子状态之间的关系。属性值有ExclusiveStates和ParallelStates,若为ExclusiveStates,表示子状态之间是互斥的,必须调用setInitialState()函数设置初始状态,当转换的目标是父状态时,状态机还需知道要转换到哪个子状态中。若值为ParallelStates,各个子状态之间是平行的关系,当父状态进入到一个状态,所有的子状态都进入到这一状态,当进入到一个最终子状态时,状态发出finished()信号[9]。   一个状态机的状态图如图1所示,s1,s2和s3分别表示状态机的3个状态,黑点指示的状态s1为初始状态,当接收到button.clicked信号,即用户点击按钮时,状态发生转换,并在这3个状态中循环切换。
  2.2 QStateMachine类
  QStateMachine类建立在状态图概念的基础上,提供了一个分层的有限状态机。状态机体系的整体继承关系主要分为3部分,分别是:
  (1)负责存储状态的QAbstractState接口;
  (2)负责对信号进行处理的QAbstractTransition接口;
  (3)为状态机类提供信号事件的QEvent接口。
  状态机管理一组继承自QAbstractState类的状态和继承自QAbstractTransition类的转换,这些状态和转换确定一个状态图。状态图建立后,状态机即可执行它。
  为状态机添加状态使用addSta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值