本页内容

QAbstractTransition Class

QAbstractTransition 类是QAbstractState 对象之间过渡效果的基类。更多内容...

头文件: #include <QAbstractTransition>
CMake: find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake: QT += statemachine
继承自: QObject
继承自:

QEventTransition 以及QSignalTransition

公共类型

enum TransitionType { ExternalTransition, InternalTransition }

属性

公共函数

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

信号

受保护函数

virtual bool eventTest(QEvent *event) = 0
virtual void onTransition(QEvent *event) = 0

重新实现的受保护函数

virtual bool event(QEvent *e) override

详细说明

QAbstractTransition类是QStateMachine 中状态(QAbstractState 对象)之间过渡的抽象基类。QAbstractTransition是Qt State Machine 框架的一部分。

sourceState() 函数返回该状态转换的源状态。targetStates() 函数返回该状态转换的目标状态。machine() 函数返回包含该状态转换的状态机。

当过渡被触发时,会发出triggered() 信号。

转换可触发动画播放。请使用addAnimation() 函数向转换添加动画。

子类化

状态机会调用 `eventTest()` 函数来确定某个事件是否应触发该过渡。在您的重写实现中,通常需要检查事件类型,将事件对象强制转换为正确的类型,并验证该事件的一个或多个属性是否符合您的条件。

当过渡被触发时,会调用 `onTransition()` 函数;请重写此函数以对过渡执行自定义处理。

成员类型文档

enum QAbstractTransition::TransitionType

此枚举指定了过渡的类型。默认情况下,该类型为外部过渡。

常量值描述
QAbstractTransition::ExternalTransition0任何作为过渡源状态(非无目标过渡)的状态都会被离开,并在必要时重新进入。
QAbstractTransition::InternalTransition1如果过渡的目标状态是复合状态的一个子状态,且该复合状态是源状态,则内部过渡不会离开源状态。

另请参阅 QAbstractTransition::transitionType 。

属性文档

[read-only] sourceState : QState*

该属性保存此转场的源状态(父状态)

访问函数:

QState *sourceState() const

targetState : QAbstractState*

该属性保存了此转换的目标状态

如果一个转换没有目标状态,该转换仍可能被触发,但这不会导致状态机的配置发生变化(即不会退出当前状态并重新进入该状态)。

访问函数:

QAbstractState *targetState() const
void setTargetState(QAbstractState *target)

通知器信号:

void targetStateChanged()[see note below]

注意:这是一个 私有信号。它可在信号连接中使用,但用户无法发出该信号。

targetStates : QList<QAbstractState*>

该属性存储了此转换的目标状态

如果指定了多个状态,则所有状态都必须是同一并行组状态的子状态。

访问函数:

QList<QAbstractState *> targetStates() const
void setTargetStates(const QList<QAbstractState *> &targets)

通知信号:

void targetStatesChanged()[see note below]

注意:这是一个 私有信号。它可用于信号连接,但用户无法发出该信号。

[bindable] transitionType : TransitionType

注意:此 属性支持QProperty 绑定。

表示该转换是内部转换还是外部转换。

内部过渡和外部过渡的行为相同,但当过渡的源状态为复合状态,且目标为源状态的子状态时除外。在这种情况下,内部过渡不会退出并重新进入其源状态,而外部过渡则会。

默认情况下,该类型为外部转换。

访问函数:

QAbstractTransition::TransitionType transitionType() const
void setTransitionType(QAbstractTransition::TransitionType type)

成员函数文档

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

返回该转换所属的状态机,如果该转换不属于任何状态机,则返回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

返回过渡的类型。

注意: 这是 property transitionType的获取 函数。

另请参阅 ` setTransitionType()`。

[private signal] void QAbstractTransition::triggered()

当过渡被触发时(在调用onTransition()之后),会发出此信号。

注意:这是一个 私有信号。它可以在信号连接中使用,但用户无法发出该信号。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.