状态机 QML 类型
提供了一个分层有限状态机。 更多...
导入语句 | import QtQml.StateMachine 6.7 |
继承 |
属性
- errorString : 字符串
- globalRestorePolicy : 枚举
- running : 布尔值
信号
方法
详细说明
状态机基于 状态图 的概念和表示方法。状态机是 Qt 状态机 QML API 的一部分。
状态机管理一组状态及其之间转换;这些状态和转换定义了状态图。一旦状态图构建完成,状态机可以执行它。状态机的执行算法基于 状态图 XML (SCXML) 算法。框架的 概述 给出了几个状态图及其构建它们的代码。
在启动机器之前,必须设置 initialState。初始状态是在启动时机器进入的状态。然后你可以设置运行属性为 true 或调用 start() 状态机。当初始状态被进入时,会发射 started 信号。
状态机会处理事件并执行转换,直到进入顶级最终状态;此时状态机会发射 finished() 信号。您也可以显式 停止 状态机(您也可以将运行属性设置为 false)。在这种情况下,会发射 stopped 信号。
示例用法
以下代码片段展示了当按钮被点击时将完成的状态机。
import QtQuick import QtQml.StateMachine as DSM Rectangle { Button { anchors.fill: parent id: button text: "Finish state" DSM.StateMachine { id: stateMachine initialState: state running: true DSM.State { id: state DSM.SignalTransition { targetState: finalState signal: button.clicked } } DSM.FinalState { id: finalState } onFinished: Qt.quit() } } }
如果在执行过程中遇到错误,机器将寻找一个 errorState,如果有的话,它会进入这个状态。进入错误状态后,可以通过 error() 方法检索错误的类型。执行状态图不会在进入错误状态时停止。如果没有适用错误的错误状态,机器将停止执行,并将错误信息打印到控制台。
警告: 将状态机的childMode设置为除了QState::ExclusiveStates之外的其他值将导致状态机无效,并可能导致行为错误。
另请参阅QAbstractState、状态、信号转换、超时转换、历史状态和Qt 状态机 QML 指南。
属性文档
errorString : string |
此状态机的错误字符串。
globalRestorePolicy : enumeration |
信号文档
started() |
当状态机进入其初始状态(State::initialState)时该信号被发出。
注意: 对应处理程序是 onStarted
。
另请参阅running、start() 和 State::finished。
stopped() |
方法文档
start() |
开始此状态机。机器将重置其配置并转换为初始状态。当进入最终顶级状态(FinalState)时,机器将发出finished()信号。
注意: 没有运行事件循环,例如使用QCoreApplication::exec() 或 QApplication::exec() 启动的应用程序主事件循环,状态机不会运行。
另请参阅started、State::finished、stop()、State::initialState 和 running。
© 2024 Qt公司版权所有。本文件包含的文档贡献均为各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 许可使用的。Qt和相应标志是芬兰及世界其他地区的Qt公司商标。所有其他商标均为各自所有者的财产。