- class QScxmlStateMachine#
QScxmlStateMachine
类提供了从 SCXML 文件创建的状态机的接口。 更多…摘要#
属性#
dataModel
- 使用于本状态机的数据模型initialValues
- 设置数据模型的初始值initialized
- 状态机是否已初始化invoked
- 状态机是否被外部状态机调用invokedServices
- 从主状态机调用(可能递归)的SCXML服务的列表loader
- 当前用于解析和为状态机加载URIname
- 状态机的名称,由 <scxml> 标签的 name 属性设置parseErrors
- 从SCXML文件创建状态机时发生的解析错误的列表running
- 本状态机的运行状态sessionId
- 当前状态机的会话IDtableData
- 从SCXML文件生成C++时使用的表格数据
方法#
__init__()
activeStateNames()
cancelDelayedEvent()
connectToEvent()
connectToState()
dataModel()
initialValues()
定义
isActive()
定义
isInvoked()
定义
isRunning()
定义
loader()
定义
name()
定义
sessionId()
定义
setLoader()
定义
setRunning()
定义
stateNames()
定义
tableData()
槽函数#
信号#
静态函数#
定义
fromData()
定义
fromFile()
注意事项
本文档可能包含来自C++到Python的自动翻译片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告诉我们。
详细描述#
QScxmlStateMachine
是状态图XML (SCXML)的一个实现。SCXML文件中定义的所有状态都可以作为
QScxmlStateMachine
的属性访问。这些属性是布尔值,指示该状态是活动还是非活动。注意事项
QScxmlStateMachine
需要一个QEventLoop才能正确工作。事件循环用于实现事件的delay
属性,并在接收到嵌套(或父级)状态机的事件时调度状态机的处理。注意事项
可以直接使用
from __feature__ import true_property
使用时,也可以通过访问器函数在其他情况下使用属性。- 属性 dataModel: QScxmlDataModel#
此属性存储用于此状态机的数据模型。
SCXML数据模型在 SCXML规范 - 5 数据模型和数据操作 中进行描述。有关支持的数据模型更多信息,请参阅 SCXML兼容性 。
当状态机已被
初始化
时更改数据模型在SCXML标准中没有定义,会导致未知行为。- 属性 initialValues: 具有 .QString 类型键 和 QVariant 类型值 的字典#
此属性存储用于设置数据模型的初始值。
另请参阅
- 属性 initialized: bool#
此属性存储是否已初始化状态机。
如果状态机已初始化,则值为
true
,否则为false
。另请参阅
- 访问函数
- 属性 invoked: bool#
此属性存储状态机是否从外部状态机调用。
true
如果状态机以<invoke>
元素启动为服务,否则false
。- 访问函数
- 属性invokedServices: QScxmlInvokableService 对象的列表#
该属性包含从主状态机(可能是递归地)调用的 SCXML 服务列表。
该属性包含当前用于解决和加载状态机 URI 的加载器。
- 访问函数
- 属性name: str#
该属性包含由
<scxml>
标签的 name 属性设置的状态机名称。- 访问函数
- 属性parseErrors: QScxmlError 对象的列表#
该属性包含在从 SCXML 文件创建状态机时发生的解析错误列表。
- 访问函数
- 属性running: bool#
该属性包含此状态机的运行状态。
另请参阅
- 访问函数
- 属性sessionId: str#
该属性包含当前状态机的会话 ID。
会话 ID 用于在父状态机和子状态机之间进行消息路由。如果状态机由一个
<invoke>
元素启动,它发送的任何事件都将设置invokeid
字段为会话 ID。状态机将使用事件的源(由<send>
元素的 target 或 targetexpr 属性设置)来将消息派发到正确的子状态机。另请参阅
- 访问函数
- 属性 tableDataᅟ: QScxmlTableData#
此属性持有用于从SCXML文件生成C++时使用的表格数据。
实现状态机的类将使用此属性来分配生成的表格数据。状态机不假定对表格数据的所有权。
- __init__(metaObject[, parent=None])#
- 参数:
metaObject –
QMetaObject
parent –
QObject
- activeStateNames([compress=true])#
- 参数:
compress – bool
- 返回类型::
字符串列表
检索所有激活状态的状态名称列表。
当状态处于活动状态时,所有其父状态按定义也都是活动状态。当
compress
为true
(默认值)时,将过滤出父状态,并且只返回 叶子状态。当它是false
时,将返回所有激活状态的完整列表。- cancelDelayedEvent(sendId)#
- 参数:
sendId – str
取消具有指定
sendId
的延迟事件。- connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])#
- 参数:
scxmlEventSpec – str
receiver –
QObject
method – str
type –
ConnectionType
- 返回类型::
连接
创建从指定
type
的scxmlEventSpec
事件到receiver
对象的method
的连接。接收器的method
可能以一个QScxmlEvent
作为参数。例如:void mySlot(const QScxmlEvent &event);
与SCXML文档中的事件规范不同,此处不允许在
scxmlEventSpec
中使用空格。为了连接到多个具有不同前缀的事件,需要多次调用connectToEvent()。返回连接句柄,可随后用于断开连接。
- connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])#
- 参数:
scxmlStateName – 字符串
receiver –
QObject
method – str
type –
ConnectionType
- 返回类型::
连接
从由
scxmlStateName
识别的状态到接收器对象的method
创建给定type
的连接。接收器的method
可以接受一个布尔参数,以指示连接的状态是变得活动还是无效。例如:void mySlot(bool active);
返回连接句柄,可随后用于断开连接。
- dataModel()#
- 返回类型::
返回状态机所使用的数据模型。
另请参阅
属性
dataModelᅟ
的获取器。- dataModelChanged(model)#
- 参数:
model –
QScxmlDataModel
属性
dataModelᅟ
的通知信号。- finished()#
当状态机达到顶级最终状态时,会发出此信号。
另请参阅
运行中
通过从指定的
data
中的QIODevice读取来创建状态机。此方法始终返回一个状态机。如果在读取SCXML文件(文件名为
fileName
)时发生错误,则状态机无法启动。可以通过调用parseErrors()
方法获取错误信息。另请参阅
- static fromFile(fileName)#
- 参数:
fileName – 字符串
- 返回类型::
从指定的SCXML文件
fileName
创建状态机。此方法始终返回一个状态机。如果在读取SCXML文件时发生错误,则状态机无法启动。可以通过调用
parseErrors()
方法获取错误信息。另请参阅
- init()#
- 返回类型::
bool
初始化状态机。
状态机的初始化包括调用
setup()
方法,设置<data>
元素的初始值,并执行<scxml>
标签的任何<script>
标签。初始数据值来自initialValues
属性。如果发生解析错误或初始化步骤中任何步骤失败,则返回
false
。否则返回true
。- initialValues()#
- 返回类型::
键为 .QString 类型,值为 QVariant 类型的字典。
另请参阅
initialValuesᅟ
属性的获取器。- initialValuesChanged(initialValues)#
- 参数:
initialValues – 键为 .QString 类型,值为 QVariant 类型的字典。
initialValuesᅟ
属性的通知信号。- initializedChanged(initialized)#
- 参数:
initialized – bool
initializedᅟ
属性的通知信号。- invokedServices()#
- 返回类型::
.列表 of QScxmlInvokableService
属性
invokedServicesᅟ
的获取器。- invokedServicesChanged(invokedServices)#
- 参数:
invokedServices – .list of QScxmlInvokableService
属性
invokedServicesᅟ
的通知信号。- isActive(scxmlStateName)#
- 参数:
scxmlStateName – 字符串
- 返回类型::
bool
如果
scxmlStateName
指定的状态是活动的,则返回true
,否则返回false
。- isActive(stateIndex)
- 参数:
stateIndex – int
- 返回类型::
bool
如果 ID 为
stateIndex
的状态是活动的,则返回true
。此方法属于 SCXML 状态机的编译表示的接口。它应仅用于内部使用以及从 SCXML 文档编译的状态机。
- isDispatchableTarget(target)#
- 参数:
target – str
- 返回类型::
bool
如果此状态机可以转发到
target
的消息,则返回true
。有效的目标包括:
#_parent
对于父状态机,如果当前状态机是通过<invoke>
启动的#_internal
对于当前状态机#_scxml_sessionid
,其中sessionid
是当前状态机的会话 ID#_servicename
,其中servicename
是通过<invoke>
启动的服务的 ID 或名称
- isInitialized()#
- 返回类型::
bool
属性
initializedᅟ
的获取器。- isInvoked()#
- 返回类型::
bool
属性
invokedᅟ
的获取器。- isRunning()#
- 返回类型::
bool
当状态机正在运行时返回
true
,否则返回false
。属性 running 的获取器。
- loader()#
- 返回类型::
Loader
另请参阅
属性 loader 的获取器。
- loaderChanged(loader)#
- 参数:
loader –
Loader
属性 loader 的通知信号。
- log(label, msg)#
- 参数:
label – str
msg – str
此信号在 SCXML 中使用
<log>
标签时发出。label
是<log>
标签的 label 属性的值。msg
是<log>
标签评估的 expr 属性的值。如果没有 expr 属性,将返回空字符串。- name()#
- 返回类型::
str
属性 name 的获取器。
- parseErrors()#
- 返回类型::
。QScxmlError 列表
属性 parseErrors 的获取器。
- reachedStableState()#
当宏步骤结束时事件队列为空或到达最终状态时,发出此信号。
- runningChanged(running)#
- 参数:
running – bool
当将带有
running
参数的running
属性发生更改时,发出此信号。属性
runningᅟ
的通知信号。- sessionId()#
- 返回类型::
str
属性
sessionIdᅟ
的获取器。- setDataModel(model)#
- 参数:
model –
QScxmlDataModel
将状态机的数据模型设置为
model
。状态机与模型之间存在一对一的关系。设置模型后无法再更改。使用此方法进一步设置模型将不予理睬。另请参阅
属性
dataModelᅟ
的设置器。- setInitialValues(initialValues)#
- 参数:
initialValues – 键为 .QString 类型,值为 QVariant 类型的字典。
另请参阅
属性
initialValuesᅟ
的设置器。属性
loaderᅟ
的设置器。- setRunning(running)#
- 参数:
running – bool
如果
running
为true
,则启动状态机,否则停止它。属性
runningᅟ
的设置器。- setTableData(tableData)#
- 参数:
tableData –
QScxmlTableData
另请参阅
属性
tableDataᅟ
的设置器。- start()#
启动此状态机。机器将重置其配置并转换到初始状态。当进入最终的顶级状态时,机器将发出
finished()
信号。注意事项
如果没有运行的事件循环,例如使用 QCoreApplication::exec() 或 QApplication::exec() 启动的应用程序主事件循环,状态机将不会运行。
- stateNames([compress=true])#
- 参数:
compress – bool
- 返回类型::
字符串列表
检索所有状态的状态名列表。
当
compress
为true
(默认值)时,包含子状态的状态将被过滤出来,只返回 叶子状态。当为false
时,会返回所有状态的完整列表。返回的列表中不包含嵌套状态机的状态。
注意事项
列表中状态名顺序是状态在 SCXML 文档中出现的顺序。
- stop()#
停止此状态机。机器将不会执行任何进一步的状态转换。其
running
属性设置为false
。- submitEvent(event)#
- 参数:
事件 –
QScxmlEvent
根据事件的优先级,提交 SCXML 事件
event
到内部或外部事件队列。当设置了延迟,事件将在超时后排队发送。状态机将拥有
event
并在处理完后删除它。- submitEvent(eventName)
- 参数:
事件名 – str
一个创建并提交带指定
eventName
名称的外部事件的实用方法。- submitEvent(eventName, data)
- 参数:
事件名 – str
data – 对象
以指定
eventName
作为名称和data
作为有效载荷数据创建并提交外部事件的实用方法。- tableData()#
- 返回类型::
另请参阅
属性
tableDataᅟ
的获取器。- tableDataChanged(tableData)#
- 参数:
tableData –
QScxmlTableData
属性
tableDataᅟ
的通知信号。