ScxmlStateMachine QML 类型
提供了一种接口,可以访问由 SCXML 文件创建的状态机。 更多...
导入语句 | import QtScxml 6.7 |
实例化 | QScxmlStateMachine |
属性
- dataModel : ScxmlDataModel
- initialValues : var
- initialized : bool
- invoked : bool
- invokedServices : list
- loader : Loader
- name : string
- parseErrors : var
- running : bool
- sessionId : string
信号
- finished()
- log(string label, string msg)
- reachedStableState()
方法
- activeStateNames(bool compress)
- cancelDelayedEvent(string sendId)
- init()
- isActive(string scxmlStateName)
- isDispatchableTarget(string target)
- start()
- stateNames(bool compress)
- stop()
- submitEvent(event)
- submitEvent(string eventName, var data)
详细描述
ScxmlStateMachine 类型是实现 状态图 XML (SCXML) 的一个示例。
SCXML 文件中定义的所有状态均作为此类型属性可访问。这些属性是布尔值,指示状态处于活动状态还是非活动状态。
属性文档
dataModel : ScxmlDataModel |
此状态机应使用的数据模型。
SCXML 数据模型在 SCXML 规范 - 5 数据模型和数据操纵 中描述。有关支持的数据模型更多信息,请参阅 SCXML 合规性。
在状态机已被初始化的情况下更改数据模型在SCXML标准中未指定,可能导致未定义的行为。
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>
元素中的target或targetexpr属性设置)将消息发送到正确的子状态机。
信号文档
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或名称
stateNames(布尔值 compress) |
检索所有状态的状态名称列表。
当 compress设置为true(默认值)时,包含子状态的状态会过滤掉,只返回叶状态。当设置为false时,返回所有状态的完整列表。
返回的列表不包含可能嵌套的状态机的状态。
注意:状态名称列表中的状态名称顺序与SCXML文档中状态出现的顺序相同。
submitEvent(事件) |
submitEvent(字符串 eventName, 变量 data) |
一个实用方法,用于创建并提交一个带有指定eventName作为名称和data作为负载数据的外部事件(可选)。
© 2024 Qt公司有限公司。本文件中包含的文档贡献均为其各自所有者的版权所有。所提供的文档在自由软件基金会发布的《GNU自由文档许可证》第1.3版条款下获得许可。Qt及其相关标志是Qt公司在芬兰和/或全世界多个国家的注册商标。所有其他商标均为其各自所有者的财产。