ScxmlStateMachine QML 类型

提供了一种接口,可以访问由 SCXML 文件创建的状态机。 更多...

导入语句import QtScxml 6.7
实例化 QScxmlStateMachine

属性

信号

方法

详细描述

ScxmlStateMachine 类型是实现 状态图 XML (SCXML) 的一个示例。

SCXML 文件中定义的所有状态均作为此类型属性可访问。这些属性是布尔值,指示状态处于活动状态还是非活动状态。

属性文档

dataModel : ScxmlDataModel

此状态机应使用的数据模型。

SCXML 数据模型在 SCXML 规范 - 5 数据模型和数据操纵 中描述。有关支持的数据模型更多信息,请参阅 SCXML 合规性

在状态机已被初始化的情况下更改数据模型在SCXML标准中未指定,可能导致未定义的行为。

另请参阅QScxmlDataModelQScxmlNullDataModelQScxmlCppDataModel


initialValues : var

用于设置数据模型的初始值。


initialized : bool [只读]

此只读属性在状态机被初始化时设置为true,否则为false


invoked : bool [只读]

状态机是否由外部状态机调用。

当状态机以<invoke>元素作为服务开始时,此只读属性设置为true,否则为false


invokedServices : list [只读]

从主状态机(可能是递归地)调用的一组SCXML服务。


loader : Loader

当前用于为状态机解析和加载URI的加载器。


name : string [只读]

状态机的名称,由<scxml>标签的name属性设置。


parseErrors : var [只读]

在从SCXML文件创建状态机时发生的解析错误列表。


running : bool

此状态机的运行状态。


sessionId : string [只读]

当前状态机的会话ID。

会话ID用于在父状态机和子状态机之间进行消息路由。如果一个状态机通过<invoke>元素启动,它发送的任何事件都将有invokeid字段设置为会话ID。状态机将使用事件的原始位置(由<send>元素中的targettargetexpr属性设置)将消息发送到正确的子状态机。


信号文档

finished()

当状态机达到顶层最终状态时,会发出此信号。

相应的信号处理程序为onFinished()

注意:相应的处理程序是onFinished


log(string `label`, string `msg`)

如果SCXML中使用<log>标签,则发出此信号。label<log>标签的label属性值。msg是评估的<log>标签的expr属性值。如果没有expr属性,将返回空字符串。

相应的信号处理程序为onLog()

注意:相应的处理程序是onLog


reachedStableState()

当一个宏步骤结束时事件队列为空,或者达到最终状态时,会发出此信号。

相应的信号处理程序为onreachedStableState()

注意:相应的处理程序是onReachedStableState


方法文档

activeStateNames(bool `compress`)

检索所有活动状态的状态名称列表。

当状态处于活动时,根据定义,所有父状态也处于活动状态。当compress设置为true(默认值)时,父状态会被过滤掉,只有叶状态会被返回。当设置为false时,返回所有活动状态的完整列表。


cancelDelayedEvent(字符串 sendId)

取消具有指定 sendId 的延迟事件。


init()

通过为<data>元素设置初始值并执行<scxml>标签中的任何<script>标签来初始化状态机。初始数据值来自initialValues属性。

如果发生解析错误或初始化步骤中任何步骤失败,则返回false。否则返回true


isActive(字符串 scxmlStateName)

如果指定 scxmlStateName 的状态处于活动状态,则返回 true,否则返回 false


isDispatchableTarget(字符串 target)

如果到 target 的消息可以被此状态机分发,则返回 true

有效的目标是

  • #_parent,对于由 <invoke> 启动的父状态机
  • #_internal,对于当前状态机
  • #_scxml_sessionid,其中 sessionid 是当前状态机的会话ID
  • #_servicename,其中 servicename 是使用 <invoke> 由该状态机启动的服务ID或名称

start()

启动此状态机。机器将重置其配置并过渡到初始状态。当进入最终顶级状态时,机器会发出finished()信号。

另请参阅 stop() 和 finished()。


stateNames(布尔值 compress)

检索所有状态的状态名称列表。

compress设置为true(默认值)时,包含子状态的状态会过滤掉,只返回叶状态。当设置为false时,返回所有状态的完整列表。

返回的列表不包含可能嵌套的状态机的状态。

注意:状态名称列表中的状态名称顺序与SCXML文档中状态出现的顺序相同。


stop()

停止此状态机。机器将不会执行任何进一步的状态转换。其running属性设置为false

另请参阅 start() 和 finished()。


submitEvent(事件)

将SCXML事件event根据事件优先级提交到内部或外部事件队列。

设置延迟后,事件将在超时过后排队发送。状态机将拥有该事件,并在处理完毕后删除它。

另请参阅 QScxmlEvent


submitEvent(字符串 eventName, 变量 data)

一个实用方法,用于创建并提交一个带有指定eventName作为名称和data作为负载数据的外部事件(可选)。


© 2024 Qt公司有限公司。本文件中包含的文档贡献均为其各自所有者的版权所有。所提供的文档在自由软件基金会发布的《GNU自由文档许可证》第1.3版条款下获得许可。Qt及其相关标志是Qt公司在芬兰和/或全世界多个国家的注册商标。所有其他商标均为其各自所有者的财产。