QAbstractTransition 类

QAbstractTransition 类是 QAbstractState 对象之间的基本类。 更多...

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

QEventTransitionQSignalTransition

公共类型

枚举TransitionType { ExternalTransition, InternalTransition }

属性

公共函数

QAbstractTransition(QState *sourceState = nullptr)
virtual~QAbstractTransition()
voidaddAnimation(QAbstractAnimation *animation)
QList<QAbstractAnimation *>animations() const
QBindable<QAbstractTransition::TransitionType>bindableTransitionType()
QStateMachine *machine() const
voidremoveAnimation(QAbstractAnimation *animation)
voidsetTargetState(QAbstractState *target)
voidsetTargetStates(const QList<QAbstractState *> &targets)
voidsetTransitionType(QAbstractTransition::TransitionType type)
QState *sourceState() const
QAbstractState *targetState() const
QList<QAbstractState *>targetStates() const
QAbstractTransition::TransitionTypetransitionType() const

信号

保护函数

virtual booleventTest(QEvent *event) = 0
virtual voidonTransition(QEvent *event) = 0

重新实现保护函数

virtual bool事件(QEvent *e) override

详细说明

QAbstractTransition 类是 QStateMachine(QStateMachine 对象)状态之间转换的抽象基类。QAbstractTransition 是 Qt 状态机框架的一部分。

函数 sourceState() 返回转换的源状态。函数 targetStates() 返回转换的目标。函数 machine() 返回包括此转换在内的状态机。

当转换被触发时,会发出信号 triggered()。

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

子类化

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

当转换被触发时,会调用函数 onTransition();重新实现此函数以执行转换的定制处理。

成员类型文档

枚举 QAbstractTransition::TransitionType

此枚举指定转换的类型。默认情况下,类型是外部转换。

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

另请参阅QAbstractTransition::transitionType.

属性文档

[只读] sourceState : QState* const

此属性持有此转换的源状态(父状态)

访问函数

QState *sourceState() const

targetState : QAbstractState*

此属性持有此转换的目标状态

如果转换没有目标状态,转换仍然可能被触发,但这将不会导致状态机配置更改(即当前状态不会退出并重新进入)。

访问函数

QAbstractState *targetState() const
voidsetTargetState(QAbstractState *target)

通知信号

voidtargetStateChanged()[请见以下注释]

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

targetStates : QList<QAbstractState*>

此属性持有此转换的目标状态

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

访问函数

QList<QAbstractState *>targetStates() const
voidsetTargetStates(const QList<QAbstractState *> &targets)

通知信号

voidtargetStatesChanged()[请见以下注释]

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

[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公司的商标。所有其他商标均为各自所有者的财产。