QState 类
QState 类为 QStateMachine 提供了一个通用状态。 更多信息...
头文件 | #include <QState> |
CMake | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
qmake | QT += statemachine |
继承 | QAbstractState |
继承自 |
公共类型
枚举 | ChildMode { ExclusiveStates, ParallelStates } |
枚举 | RestorePolicy { DontRestoreProperties, RestoreProperties } |
属性
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
公共函数
QState(QState *parent = nullptr) | |
QState(QState::ChildMode childMode, QState *parent = nullptr) | |
虚拟 | ~QState() |
void | addTransition(QAbstractTransition *transition) |
QSignalTransition * | addTransition(const QObject *sender, const char *signal, QAbstractState *target) |
QSignalTransition * | addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target) |
QAbstractTransition * | addTransition(QAbstractState *target) |
void | assignProperty(QObject *object, const char *name, const QVariant &value) |
QBindable<QState::ChildMode> | bindableChildMode() |
QBindable<QAbstractState *> | bindableErrorState() |
QBindable<QAbstractState *> | bindableInitialState() |
QState::ChildMode | childMode() const |
QAbstractState * | errorState() const |
QAbstractState * | initialState() const |
void | removeTransition(QAbstractTransition *transition) |
void | setChildMode(QState::ChildMode mode) |
void | setErrorState(QAbstractState *state) |
void | setInitialState(QAbstractState *state) |
QList<QAbstractTransition *> | transitions() const |
信号
void | childModeChanged() |
void | errorStateChanged() |
void | finished() |
void | initialStateChanged() |
void | propertiesAssigned() |
重写的保护函数
详细描述
QState 对象可以拥有子状态,并且可以转换到其他状态。QState 是 Qt 状态机框架的一部分。
addTransition() 函数添加转换。 removeTransition() 函数移除转换。 transitions() 函数返回状态的输出转换。
assignProperty() 函数用于定义在进入状态时应执行的结构体属性赋值。
顶层状态必须将 QStateMachine 对象作为其父状态传递,或者使用 QStateMachine::addState() 将其添加到状态机中。
具有子状态的状态
childMode 属性确定如何处理子状态。对于非并行状态组,必须调用 setInitialState() 函数来设置初始状态。子状态是互斥状态,状态机需要知道父状态是转换的目标时将进入哪个子状态。
当进入最终子状态 (QFinalState) 时,状态将发出 QState::finished() 信号。
setErrorState() 设置状态的错误状态。错误状态是在尝试进入状态时检测到错误时,状态机将转换到的状态(例如,因为没有设置初始状态)。
成员类型文档
枚举 QState::ChildMode
此枚举指定如何处理状态的孩子状态。
常量 | 值 | 描述 |
---|---|---|
QState::ExclusiveStates | 0 | 子状态是互斥的,必须调用 QState::setInitialState() 来设置初始状态。 |
QState::ParallelStates | 1 | 子状态是并行的。当进入父状态时,所有子状态都将并行进入。 |
枚举 QState::RestorePolicy
此枚举指定恢复策略类型。当机器进入设置一个或多个属性的状态时,恢复策略生效。
稍后,当机器进入的状态未设置给定属性的值时,属性将自动恢复到其初始值。
将保存任何给定属性的任何初始值。如果状态机已保存属性值,则只有在属性成功恢复后才会覆盖。
常量 | 值 | 描述 |
---|---|---|
QState::DontRestoreProperties | 0 | 状态机不应保存属性的初始值并在以后恢复它们。 |
QState::RestoreProperties | 1 | 状态机应保存属性的初始值并在以后恢复它们。 |
另请参阅QStateMachine::globalRestorePolicy 和 QState::assignProperty。
属性文档
[可绑定]
childMode : ChildMode
注意:此属性支持QProperty绑定。
此属性保留此状态的子模式
此属性的默认值是QState::ExclusiveStates。
[可绑定]
errorState : QAbstractState*
注意:此属性支持QProperty绑定。
此属性保留此状态的错误状态
[可绑定]
initialState : QAbstractState*
注意:此属性支持QProperty绑定。
此属性保留此状态的初始状态(其子状态之一)
成员函数文档
QState::QState(QState *parent = nullptr)
使用给定的parent状态构建一个新的状态。
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
使用给定的childMode和给定的parent状态构建一个新的状态。
[虚拟 noexcept]
QState::~QState()
销毁此状态。
void QState::addTransition(QAbstractTransition *transition)
添加给定的transition。转换具有此状态作为源。此状态拥有转换的所有权。
QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)
添加与给定sender对象的给定signal相关的转换,并返回新的QSignalTransition对象。转换具有此状态作为源,给定target作为目标状态。
template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)
这是一个重载函数。
添加与给定sender对象的给定signal相关的转换,并返回新的QSignalTransition对象。转换具有此状态作为源,给定target作为目标状态。
QAbstractTransition *QState::addTransition(QAbstractState *target)
向给定target状态添加无条件转换,并返回新的转换对象。
void QState::assignProperty(QObject *object, const char *name, const QVariant &value)
当进入此状态时,指示此状态将给定的name的属性设置给给定的object和给定的value。
另请参阅已分配的属性。
QState::ChildMode QState::childMode() const
返回此状态的孩子模式。
注意:这是属性childMode的获取函数。
另请参阅setChildMode。
[私有信号]
void QState::childModeChanged()
当childMode属性更改时,会发射此信号。
注意:这是一个私有信号。它可以用于信号连接,但不能由用户发射。
注意:这是属性<ページモード>的属性更改通知器信号。
另请参阅QState::childMode。
QAbstractState *QState::errorState() const
返回此状态的错误状态。
注意:这是属性errorState的获取函数。
另请参阅setErrorState和QStateMachine::error。
[私有信号]
void QState::errorStateChanged()
当errorState属性更改时,会发射此信号。
注意:这是一个私有信号。它可以用于信号连接,但不能由用户发射。
注意:这是属性errorState的通知器信号。
另请参阅QState::errorState。
[重写虚拟受保护]
bool QState::event(QEvent *e)
重新实现:QAbstractState::event(QEvent *e)。
[私有信号]
void QState::finished()
当进入此状态的一个最终子状态时,会发射此信号。
注意:这是一个私有信号。它可以用于信号连接,但不能由用户发射。
另请参阅QFinalState。
QAbstractState *QState::initialState() const
返回此状态的首个状态,如果没有首个状态则为nullptr
。
注意:这是属性initialState的获取函数。
另请参阅setInitialState。
[私有信号]
void QState::initialStateChanged()
当initialState属性更改时,会发射此信号。
注意:这是一个私有信号。它可以用于信号连接,但不能由用户发射。
注意:这是属性initialState的通知器信号。
另请参阅QState::initialState。
[重写虚拟受保护]
void QState::onEntry(QEvent *event)
重新实现:QAbstractState::onEntry(QEvent *event)。
[重写虚受保护]
void QState::onExit(QEvent *event)
重实现: QAbstractState::onExit(QEvent *event).
[私有信号]
void QState::propertiesAssigned()
当所有属性都已分配其最终值时,发出此信号。如果状态为存在动画的一个或多个属性分配了值(无论是设置在转换上还是作为状态机的默认动画),则只有在所有此类动画完成后才会发出信号。
如果没有相关动画,或者没有为状态定义属性分配,则信号将在此状态进入之前立即发出。
另请参阅 QState::assignProperty() 和 QAbstractTransition::addAnimation()
注意:这是一个私有信号。它可以用于信号连接,但不能由用户发射。
void QState::removeTransition(QAbstractTransition *transition)
从该状态中删除指定的 transition。状态释放了对转换的所有权。
另请参阅 addTransition().
void QState::setChildMode(QState::ChildMode mode)
设置此状态的孩子 模式。
注意:属性 childMode 的设置函数。
另请参阅 childMode().
void QState::setErrorState(QAbstractState *state)
将此状态的错误状态设置为给定的 状态。如果没有设置错误状态,或者它被设置为 nullptr
,则状态将递归地继承其父状态的错误状态。如果状态或其任何祖先未设置错误状态,则错误会导致机器停止执行,并将错误打印到控制台。
注意:属性 errorState 的设置函数。
另请参阅 errorState().
void QState::setInitialState(QAbstractState *state)
将此状态的初始状态设置为给定的 状态。 状态 必须是该状态的孩子。
注意:属性 initialState 的设置函数。
另请参阅 initialState().
QList<QAbstractTransition *> QState::transitions() const
返回此状态的非转换(即,此状态是 源状态 的转换),如果没有转换则返回空列表。
另请参阅 addTransition().
© 2024 Qt公司。本文档中包含的贡献文档版权属于各自所有者。本提供的文档是根据自由软件基金会公布的GNU自由文档许可证第1.3版许可的。GNU自由文档许可证1.3版。Qt及其相应标志是Qt公司在芬兰及/或其他国家/地区的商标。所有其他商标均属其各自所有者。