QAbstractTransition Class

QAbstractTransition 类是QAbstractState 对象之间转换的基类。更多

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

QEventTransitionQSignalTransition

公共类型

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 Framework 的一部分。

sourceState() 函数返回过渡的源。targetStates() 函数返回过渡的目标。machine() 函数返回过渡所处的状态机。

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

过渡可以导致播放动画。使用addAnimation() 函数可为转场添加动画。

子类化

eventTest() 函数由状态机调用,以确定事件是否应触发转换。在重新实现时,通常要检查事件类型,将事件对象转换为适当的类型,并检查事件的一个或多个属性是否符合标准。

触发转换时,将调用onTransition() 函数;重新实现此函数可对转换执行自定义处理。

成员类型文档

enum QAbstractTransition::TransitionType

该枚举用于指定过渡类型。默认情况下,类型为外部转换。

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

另请参阅 QAbstractTransition::transitionType

属性文档

[read-only] sourceState : QState* const

此属性保存此转换的源状态(父状态

访问功能:

QState *sourceState() const

targetState : QAbstractState*

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

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

访问功能:

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

Notifier 信号:

void targetStateChanged()[see note below]

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

targetStates : QList<QAbstractState*>

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

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

访问功能

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

Notifier 信号:

void targetStatesChanged()[see note below]

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

[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

返回该转换所属的状态机,如果该转换不是状态机的一部分,则返回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().

[private signal] void QAbstractTransition::triggered()

该信号在触发转换时(调用onTransition() 后)发出。

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

© 2025 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.