QAbstractTransition 类
QAbstractTransition 类是 QAbstractState 对象之间的基本类。 更多...
头文件 | #include <QAbstractTransition> |
CMake | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
qmake | QT += statemachine |
继承 | QObject |
继承自 |
公共类型
枚举 | TransitionType { ExternalTransition, InternalTransition } |
属性
- sourceState : QState* const
- targetState : QAbstractState*
- targetStates : QList<QAbstractState*>
- transitionType : TransitionType
公共函数
QAbstractTransition(QState *sourceState = nullptr) | |
virtual | ~QAbstractTransition() |
void | addAnimation(QAbstractAnimation *animation) |
QList<QAbstractAnimation *> | animations() const |
QBindable<QAbstractTransition::TransitionType> | bindableTransitionType() |
QStateMachine * | machine() const |
void | removeAnimation(QAbstractAnimation *animation) |
void | setTargetState(QAbstractState *target) |
void | setTargetStates(const QList<QAbstractState *> &targets) |
void | setTransitionType(QAbstractTransition::TransitionType type) |
QState * | sourceState() const |
QAbstractState * | targetState() const |
QList<QAbstractState *> | targetStates() const |
QAbstractTransition::TransitionType | transitionType() const |
信号
void | targetStateChanged() |
void | targetStatesChanged() |
void | triggered() |
保护函数
virtual bool | eventTest(QEvent *event) = 0 |
virtual void | onTransition(QEvent *event) = 0 |
重新实现保护函数
virtual bool | 事件(QEvent *e) override |
详细说明
QAbstractTransition 类是 QStateMachine(QStateMachine 对象)状态之间转换的抽象基类。QAbstractTransition 是 Qt 状态机框架的一部分。
函数 sourceState() 返回转换的源状态。函数 targetStates() 返回转换的目标。函数 machine() 返回包括此转换在内的状态机。
当转换被触发时,会发出信号 triggered()。
转换可以触发动画播放。使用函数 addAnimation() 向转换中添加动画。
子类化
函数 eventTest() 会被状态机调用以确定是否应该触发转换。在你的重新实现中,通常需要检查事件类型并将事件对象转换为适当类型,并检查事件的一个或多个属性是否符合你的标准。
当转换被触发时,会调用函数 onTransition();重新实现此函数以执行转换的定制处理。
成员类型文档
枚举 QAbstractTransition::TransitionType
此枚举指定转换的类型。默认情况下,类型是外部转换。
常量 | 值 | 描述 |
---|---|---|
QAbstractTransition::ExternalTransition | 0 | 任何作为转换源状态的状态(不是无目标转换),都将被左移,并在需要时重新进入。 |
QAbstractTransition::InternalTransition | 1 | 如果转换的目标状态是复合状态的一个子状态,并且复合状态是源状态,则内部转换不会离开源状态。 |
属性文档
[只读]
sourceState : QState* const
此属性持有此转换的源状态(父状态)
访问函数
QState * | sourceState() const |
targetState : QAbstractState*
此属性持有此转换的目标状态
如果转换没有目标状态,转换仍然可能被触发,但这将不会导致状态机配置更改(即当前状态不会退出并重新进入)。
访问函数
QAbstractState * | targetState() const |
void | setTargetState(QAbstractState *target) |
通知信号
void | targetStateChanged() | [请见以下注释] |
注意:这是一个私有信号。它可以在信号连接中使用,但不能由用户发出。
targetStates : QList<QAbstractState*>
此属性持有此转换的目标状态
如果指定了多个状态,则所有状态都必须是相同并行组状态的子状态。
访问函数
QList<QAbstractState *> | targetStates() const |
void | setTargetStates(const QList<QAbstractState *> &targets) |
通知信号
void | targetStatesChanged() | [请见以下注释] |
注意:这是一个私有信号。它可以在信号连接中使用,但不能由用户发出。
[bindable]
transitionType : TransitionType
注意:此属性支持QProperty绑定。
表示此过渡是内部过渡还是外部过渡。
内部过渡和外部过渡的行为相同,除了以下情况:过渡的源状态是复合状态,且目标状态是源状态的子状态。在这种情况下,内部过渡不会退出再进入它的源状态,而外部过渡则会。
默认情况下,类型为外部过渡。
成员函数文档
QAbstractTransition::QAbstractTransition(QState *sourceState = nullptr)
构造一个带有指定sourceState的新QAbstractTransition对象。
[virtual noexcept]
QAbstractTransition::~QAbstractTransition()
销毁此过渡。
void QAbstractTransition::addAnimation(QAbstractAnimation *animation)
将给定的animation添加到此过渡。过渡不会拥有动画的所有权。
另见 removeAnimation()和animations。
QList<QAbstractAnimation *> QAbstractTransition::animations() const
返回与此过渡关联的动画列表,如果没有动画则为空列表。
另见 addAnimation。
[override virtual protected]
bool QAbstractTransition::event(QEvent *e)
重实现了:QObject::event(QEvent *e)。
[pure virtual protected]
bool QAbstractTransition::eventTest(QEvent *event)
此函数用于确定给定的event是否会导致此过渡触发。重写此函数并在事件应触发转换时返回true,否则返回false。
QStateMachine *QAbstractTransition::machine() const
返回此过渡所属的状态机,如果过渡不是状态机的一部分则返回coefft="nullptr"。
[pure virtual protected]
void QAbstractTransition::onTransition(QEvent *event)
此函数在过渡被触发时调用。给定的event是触发过渡的原因。重写此函数以在触发转换时执行自定义处理。
void QAbstractTransition::removeAnimation(QAbstractAnimation *animation)
从此转换中移除给定的 animation。
另见 addAnimation。
void QAbstractTransition::setTargetState(QAbstractState *target)
设置此转换的目标状态为 target。
注意:属性 targetState 的设置函数。
另请参阅:targetState()。
void QAbstractTransition::setTargetStates(const QList<QAbstractState *> &targets)
将此转换的目标状态设置为目标 targets。
注意:属性 targetStates 的设置函数。
另请参阅:targetStates()。
void QAbstractTransition::setTransitionType(QAbstractTransition::TransitionType type)
将转换的类型设置为 type。
注意:属性 transitionType 的设置函数。
另请参阅:transitionType()。
QState *QAbstractTransition::sourceState() const
返回此转换的源状态,如果没有源状态,则返回 nullptr
。
注意:属性 sourceState 的获取函数。
QAbstractState *QAbstractTransition::targetState() const
返回此转换的目标状态,如果没有目标,则返回 nullptr
。
注意:属性 targetState 的获取函数。
另请参阅:setTargetState()。
[private signal]
void QAbstractTransition::targetStateChanged()
当属性 targetState 发生变化时,会发出此信号。
注意:这是一个私有信号。它可以在信号连接中使用,但不能由用户发出。
注意:属性 targetState 的通知信号。
另请参阅:QAbstractTransition::targetState。
QList<QAbstractState *> QAbstractTransition::targetStates() const
返回此转换的目标状态,如果没有目标状态,则返回一个空列表。
注意:属性 targetStates 的获取函数。
另请参阅:setTargetStates()。
[private signal]
void QAbstractTransition::targetStatesChanged()
当属性 targetStates 发生变化时,会发出此信号。
注意:这是一个私有信号。它可以在信号连接中使用,但不能由用户发出。
注意:属性 targetStates 的通知信号。
另请参阅:QAbstractTransition::targetStates。
QAbstractTransition::TransitionType QAbstractTransition::transitionType() const
返回转换的类型。
注意:属性transitionType的获取器函数。
另请参阅setTransitionType()。
[私有信号]
void QAbstractTransition::triggered()
当触发转换时(在调用onTransition()后),会发出此信号。
注意:这是一个私有信号。它可以在信号连接中使用,但不能由用户发出。
© 2024 Qt公司。此处包含的文档贡献版权归各自所有者所有。此处提供的文档根据自由软件基金会发布的GNU自由文档许可版本1.3的条款进行许可。Qt及其 respective logos是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为各自所有者的财产。