QAbstractAnimation 类
QAbstractAnimation 类是所有动画的基础。 更多信息...
头文件 | #include <QAbstractAnimation> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承自 | QObject |
继承 |
- 所有成员的列表,包括继承的成员
- QAbstractAnimation 是 动画框架 的一部分。
公共类型
枚举 | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
枚举 | Direction { Forward, Backward } |
枚举 | State { Stopped, Paused, Running } |
属性
|
公共函数
QAbstractAnimation(QObject *parent = nullptr) | |
virtual | ~QAbstractAnimation() |
QBindable<int> | bindableCurrentLoop() const |
QBindable<int> | bindableCurrentTime() |
QBindable<QAbstractAnimation::Direction> | bindableDirection() |
QBindable<int> | bindableLoopCount() |
QBindable<QAbstractAnimation::State> | bindableState() const |
int | currentLoop() const |
int | currentLoopTime() const |
int | currentTime() const |
QAbstractAnimation::Direction | direction() const |
virtual int | duration() const = 0 |
QAnimationGroup * | group() const |
int | loopCount() const |
void | setDirection(QAbstractAnimation::Direction direction) |
void | setLoopCount(int loopCount) |
QAbstractAnimation::State | state() const |
int | totalDuration() const |
公共槽函数
void | pause() |
void | resume() |
void | setCurrentTime(int msecs) |
void | setPaused(bool paused) |
void | 开始(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
void | 停止() |
信号
void | 当前循环改变(int 当前循环) |
void | 方向改变(QAbstractAnimation::Direction 新方向) |
void | 完成() |
void | 状态改变(QAbstractAnimation::State 新状态, QAbstractAnimation::State 旧状态) |
受保护函数
virtual void | updateCurrentTime(int 当前时间) = 0 |
virtual void | updateDirection(QAbstractAnimation::Direction direction) |
virtual void | updateState(QAbstractAnimation::State 新状态, QAbstractAnimation::State 旧状态) |
重实现受保护函数
virtual bool | event(QEvent *event) override |
详细描述
此类定义了所有动画共享的功能函数。通过继承此类,您可以创建可以插入到其他动画框架中的自定义动画。
动画的进度由其当前时间给出(currentLoopTime()),这是从动画开始(0)到结束(duration())的时间(以毫秒计)。该值在动画运行时自动更新。也可以通过 setCurrentTime() 直接设置。
在任何时候,动画都处于三种状态之一: Running(运行),Stopped(停止)或 Paused(暂停)—如 State 枚举中定义。可以通过调用 start(),stop(),pause()或 resume() 来更改当前状态。动画启动时,总是会重置其 current time。如果暂停,则恢复时将继续使用相同的当前时间。当动画停止时,它不能恢复,但是会保留其当前时间(直到再次启动)。QAbstractAnimation会在其状态更改时发出 stateChanged()。
可以通过设置 loopCount 属性来让动画无限次循环。当一个动画的当前时间达到其 duration,它会重置当前时间并继续运行。循环计数为 1(默认值)表示动画将运行一次。注意,持续时间设置为 -1 表示动画将一直运行直到停止;当前时间将无限增加。当当前时间等于 duration 并且动画在其最后循环中时,将进入 Stopped 状态,并发出 finished() 信号。
QAbstractAnimation提供了用于跟踪动画进度的纯虚函数: duration()和 updateCurrentTime。 duration函数允许您报告动画的持续时间(如上所述)。当当前时间改变时,动画框架会调用 updateCurrentTime。通过重新实现此函数,您可以跟踪动画进度。请注意,调用之间的间隔和此函数的调用次数都没有定义;尽管如此,通常为每秒60次更新。
通过重新实现updateState(),您可以跟踪动画的状态变化,这对不由时间驱动的动画特别有用。
另请参阅QVariantAnimation、QPropertyAnimation、QAnimationGroup和动画框架.
成员类型文档
枚举QAbstractAnimation::DeletionPolicy
常量 | 值 | 描述 |
---|---|---|
QAbstractAnimation::KeepWhenStopped | 0 | 当动画停止时,动画不会删除。 |
QAbstractAnimation::DeleteWhenStopped | 1 | 当动画停止时,动画将被自动删除。 |
枚举QAbstractAnimation::Direction
此枚举描述了动画在运行状态时的方向。
常量 | 值 | 描述 |
---|---|---|
QAbstractAnimation::Forward | 0 | 动画的当前时间随时间增加(即从0移动到结束/持续时间)。 |
QAbstractAnimation::Backward | 1 | 动画的当前时间随时间减少(即从结束/持续时间移动到0)。 |
另请参阅方向.
枚举QAbstractAnimation::State
此枚举描述了动画的状态。
常量 | 值 | 描述 |
---|---|---|
QAbstractAnimation::Stopped | 0 | 动画未运行。这是QAbstractAnimation的初始状态,当完成时,QAbstractAnimation将重新进入此状态。当前时间保持不变,直到调用setCurrentTime(),或者通过调用start()启动动画。 |
QAbstractAnimation::Paused | 1 | 动画已暂停(即临时暂停)。调用resume()将恢复动画活动。 |
QAbstractAnimation::Running | 2 | 动画正在运行。当控制权在事件循环中时,QAbstractAnimation将在适当的时候定期更新其当前时间,并调用updateCurrentTime()。 |
另请参阅state()和stateChanged().
属性文档
[bindable read-only]
currentLoop : int
注意:此属性支持QProperty绑定。
此属性保留动画的当前循环
此属性描述了动画的当前循环。默认情况下,动画的循环计数为1,因此当前循环始终为0。如果循环计数为2,并且动画运行超过了其持续时间,它将自动倒回并在当前时间0,当前循环1处重新启动,依此类推。
当当前循环更改时,QAbstractAnimation将发出currentLoopChanged()信号。
[bindable]
currentTime : int
注意:此属性支持QProperty绑定。
此属性保留动画的当前时间和进度
此属性描述了动画的当前时间。您可以通过调用setCurrentTime来更改当前时间,或者您可以调用start()并让动画运行,在动画进度时自动设置当前时间。
动画的当前时间从0开始,结束于totalDuration()。
注意:您可以将其他属性绑定到currentTime上,但不建议对其进行绑定。随着动画进行,currentTime将自动更新,从而取消其绑定。
另请参阅:loopCount和currentLoopTime。
[可绑定]
direction : Direction
注意:此属性支持QProperty绑定。
此属性在动画处于运行状态时表示动画的方向。
此方向指示时间是从0开始向动画持续时间移动,还是在调用start()之后,从持续时间值开始向0移动。
默认情况下,此属性设置为正向。
[只读]
duration : const int
此属性表示动画的持续时间。
如果持续时间是-1,则表示持续时间未定义。在这种情况下,loopCount将被忽略。
访问函数
virtual int | duration() const = 0 |
[可绑定]
loopCount : int
注意:此属性支持QProperty绑定。
此属性表示动画的循环次数。
此属性以整数形式描述动画的循环次数。默认值是1,表示动画只运行一次然后停止。通过更改它,可以让动画循环多次。值为0时,动画将根本不会运行,值为-1时,动画会无限循环直到停止。不支持在具有未定义持续时间的动画上循环。它只会运行一次。
[可绑定只读]
state : State
注意:此属性支持QProperty绑定。
动画的状态。
此属性描述动画的当前状态。当动画状态改变时,QAbstractAnimation会发出stateChanged()信号。
注意:状态更新可能会导致currentTime属性的更新,进而取消其绑定。因此,在预计动画状态会变化时,请小心设置currentTime属性的绑定。
成员函数文档
QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)
构造QAbstractAnimation基类,并将parent传递给QObject的构造函数。
另请参阅:QVariantAnimation和QAnimationGroup。
[虚拟 noexcept]
QAbstractAnimation::~QAbstractAnimation()
如果动画正在运行,则停止动画,然后销毁QAbstractAnimation。如果动画是QAnimationGroup的一部分,则在销毁之前会自动将其删除。
[信号]
void QAbstractAnimation::currentLoopChanged(int currentLoop)
QAbstractAnimation 每当当前循环改变时都会发出此信号。 currentLoop 是当前循环。
注意:属性 currentLoop 的通知信号。
另请参阅:currentLoop() 和 loopCount。
int QAbstractAnimation::currentLoopTime() const
返回当前循环中的当前时间。它可以从 0 到 duration ()。
另请参阅:duration() 和 currentTime。
[信号]
void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)
QAbstractAnimation 每当方向改变时都会发出此信号。 newDirection 是新的方向。
注意:属性 direction 的通知信号。
另请参阅方向.
[纯虚]
int QAbstractAnimation::duration() const
此纯虚函数返回动画的持续时间,并定义 QAbstractAnimation 应更新当前时间的时长。此时长是局部的,不包括循环计数。
返回值为 -1 表示动画没有定义的持续时间;动画应持续运行,直到停止。这对于非时间驱动的动画或难以预测其持续时间的动画很有用(例如,游戏中由事件驱动的音频播放)。
如果动画是并行 QAnimationGroup,则持续时间将是所有动画中最长的持续时间。如果动画是顺序 QAnimationGroup,则持续时间将是所有动画持续时间之和。
注意:属性 duration 的获取函数。
另请参阅:loopCount。
[重载虚保护函数]
bool QAbstractAnimation::event(QEvent *event)
重写:QObject::event(QEvent *e)。
[信号]
void QAbstractAnimation::finished()
QAbstractAnimation 在动画停止并到达结束时发出此信号。
在 stateChanged 之后发出此信号。
另请参阅:stateChanged。
QAnimationGroup *QAbstractAnimation::group() const
如果此动画是 QAnimationGroup 的一部分,则此函数返回组指针;否则返回 nullptr
。
另请参阅:QAnimationGroup::addAnimation。
[槽]
void QAbstractAnimation::pause()
暂停动画。当动画暂停时,state() 返回 Paused。直到调用 resume() 或 start(),currentTime 的值将保持不变。若要从当前时间继续,请调用 resume
另请参阅start(),state() 及 resume()。
[slot]
void QAbstractAnimation::resume()
在动画暂停后恢复动画。当动画恢复时,它将发出 resumed() 和 stateChanged() 信号。当前时间将保持不变。
另请参阅start(),pause() 和 state()。
[slot]
void QAbstractAnimation::setPaused(bool paused)
如果 paused 为 true,则动画将暂停。如果 paused 为 false,则动画将恢复。
另请参阅state(),pause() 和 resume()。
[slot]
void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
开始动画。参数 policy 指示动画完成后是否应该被删除。当动画开始时,将发出 stateChanged() 信号,并且 state() 返回 Running。当控制达到事件循环时,动画将自行运行,在动画进行期间,定期调用 updateCurrentTime()。
如果动画目前处于停止状态或已达到末尾,调用 start() 将回放动画并从开始处重新开始。当动画达到末尾时,动画将停止,或者如果循环级别超过 1,它将回放并从开始处继续。
如果动画已经在运行,此函数将不起作用。
[signal]
void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
QAbstractAnimationWhenever the state of the animation changes from oldState to newState,emit this signal. This signal is emitted after the virtual updateState() function is called.
注意:属性 state 的通知信号。
另请参阅updateState()。
[slot]
void QAbstractAnimation::stop()
停止动画。当动画停止时,它触发 stateChanged() 信号,并且 state() 返回 Stopped。当前时间不改变。
如果动画在达到结尾后自动停止(即 currentLoopTime() == duration() 并且 currentLoop() > loopCount() - 1),将触发 finished() 信号。
int QAbstractAnimation::totalDuration() const
返回动画的总以及有效持续时间,包括循环次数。
另请参阅:duration() 和 currentTime。
[纯虚保护]
void QAbstractAnimation::updateCurrentTime(int currentTime)
每当动画的 currentTime 发生改变时,都会调用这个纯虚函数。
另请参阅updateState()。
[虚保护]
void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)
当动画的方向改变时,QAbstractAnimation 会调用此虚函数。其中 direction 参数是新的方向。
参见setDirection() 和 direction()。
[虚保护]
void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
当动画的状态从 oldState 改变为 newState 时,QAbstractAnimation 会调用此虚函数。
© 2024 Qt 公司。本文档中的文档贡献属于各自所有者。本文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相关的标志是芬兰的 Qt 公司和/或其他世界各地的商标。所有其他商标属于其各自所有者。