Qt State Machine 概述

状态机框架提供了用于创建和执行状态图的类。其概念和符号体系基于哈雷尔(Harel)的《状态图:复杂系统的可视化形式化方法》(Statecharts: A visual formalism for complex systems),该理论也是 UML 状态图的基础。状态机执行的语义基于状态图 XML(SCXML)。

状态图提供了一种图形化方式,用于建模系统如何响应刺激。具体实现是通过定义系统可能处于的状态,以及系统如何从一个状态转移到另一个状态(状态之间的转换)。 事件驱动系统(如 Qt 应用程序)的一个关键特征是,其行为往往不仅取决于最近或当前的事件,还取决于之前的事件。借助状态图,这些信息可以轻松地表达出来。

Qt State Machine 框架提供了一套 API 和执行模型,可用于将状态图的元素和语义有效地嵌入到 Qt 应用程序中。 该框架与 Qt 的元对象系统紧密集成;例如,状态之间的转换可以由信号触发,并且可以配置状态来设置 {QObject} 的属性并调用其方法。Qt 的事件系统用于驱动状态机。

状态机框架中的状态图是分层的。状态可以嵌套在其他状态之中,而状态机的当前配置由当前处于活动状态的一组状态组成。状态机有效配置中的所有状态都将有一个共同的祖先。

另请参阅 《Qt State Machine C++ 指南》、Qt State Machine 《QML 指南》以及Qt SCXML 《概述》。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.