Animator QML Type (Uncreatable)
是所有 QML 动画器的基类。更多...
| Import Statement: | import QtQuick |
| Inherits: | |
| Inherited By: | OpacityAnimator, RotationAnimator, ScaleAnimator, UniformAnimator, XAnimator, and YAnimator |
注意:这是一个不可创建的类型。无法在 QML 中实例化。
属性
- duration : int
- easing
- easing.amplitude : real
- easing.bezierCurve : list<real>
- easing.overshoot : real
- easing.period : real
- easing.type : enumeration
- from : real
- target : QtQuick::Item
- to : real
详细说明
动画器(Animator)类型是一种特殊的动画类型,它直接作用于Qt Quick 的场景图,而不是像普通动画类型那样作用于QML对象及其属性。这样做的好处是,即使UI线程被阻塞,基于动画器的动画仍可在场景图的渲染线程上运行。
QML 属性的值将在动画结束后更新。在动画运行期间,该属性不会被更新。
Animator 类型的使用方式与任何其他动画类型完全相同。
Rectangle {
id: mixBox
width: 50
height: 50
ParallelAnimation {
ColorAnimation {
target: mixBox
property: "color"
from: "forestgreen"
to: "lightsteelblue";
duration: 1000
}
ScaleAnimator {
target: mixBox
from: 2
to: 1
duration: 1000
}
running: true
}
}如果ParallelAnimation 和SequentialAnimation 的所有子动画均为Animator类型,则ParallelAnimation 和SequentialAnimation 也将被视为Animator,并在可能的情况下在场景图的渲染线程上运行。
Animator 类型可用于过渡期间的动画,但不支持reversible 属性。
Animator 类型不能直接在 QML 文件中使用。它的存在是为了提供一组通用属性和方法,这些属性和方法在所有继承自它的其他动画器类型中均可使用。尝试直接使用 Animator 类型将导致错误。
注意: 当使用非多线程渲染循环时,Animator 类型没有任何优势。
注意:建议 应用程序采用基于多线程、异步原则的设计,而不是依赖 Animator 在主(GUI)线程上执行耗时且阻塞的操作时显示动画内容。与其进行长时间的阻塞操作,不如在 QML 中优先使用 `WorkerScript ` 和 `asynchronous image loading `,并在 C++ 中使用工作线程、并行算法 Qt Concurrent以及协程,从而确保整个应用程序和用户界面始终保持响应。
属性文档
duration : int
该属性存储动画的持续时间(以毫秒为单位)。
默认值为 250。
easing group
easing.amplitude : real
easing.bezierCurve : list<real>
easing.overshoot : real
easing.period : real
easing.type : enumeration
指定动画所使用的缓动曲线
要指定缓动曲线,至少需指定其类型。对于某些曲线,还可以指定振幅、周期和/或超调量(更多详细信息见下表之后)。默认缓动曲线为Easing.Linear 。
PropertyAnimation { properties: "y";
easing.type: Easing.InOutElastic;
easing.amplitude: 2.0;
easing.period: 1.5 }可用类型包括:
Easing.Linear | 线性(t)函数的缓动曲线:速度保持恒定。 | ![]() |
Easing.InQuad | 二次(t²)函数的缓入/缓出曲线:从零速度开始加速。 | ![]() |
Easing.OutQuad | 二次(t²)函数的缓动曲线:从零速度减速至零。 | ![]() |
Easing.InOutQuad | 二次(t²)函数的缓和曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInQuad | 二次(t²)函数的缓动曲线:减速至行程一半,然后加速。 | ![]() |
Easing.InCubic | 三次(t³)函数的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutCubic | 三次(t^3)函数的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutCubic | 三次(t^3)函数的缓入/缓出曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInCubic | 三次(t³)函数的缓冲曲线:减速至中途,然后加速。 | ![]() |
Easing.InQuart | 四次(t^4)函数的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutQuart | 四次(t^4)函数的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutQuart | 四次(t^4)函数的缓入曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInQuart | 四次(t^4)函数的缓入曲线:减速至中途,然后加速。 | ![]() |
Easing.InQuint | 五次(t^5)函数的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutQuint | 五次(t^5)函数的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutQuint | 五次(t^5)函数的缓入/缓出曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInQuint | 五次(t^5)函数的缓入曲线:减速至中途,然后加速。 | ![]() |
Easing.InSine | 正弦(sin(t))函数的缓入/缓出曲线:从零速度开始加速。 | ![]() |
Easing.OutSine | 正弦(sin(t))函数的缓入/缓出曲线:减速至零速度。 | ![]() |
Easing.InOutSine | 正弦(sin(t))函数的缓动曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInSine | 正弦(sin(t))函数的缓入/缓出曲线:减速至中途,然后加速。 | ![]() |
Easing.InExpo | 指数函数(2^t)的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutExpo | 指数函数 (2^t) 的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutExpo | 指数(2^t)函数的缓动曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInExpo | 指数函数 (2^t) 的缓入/缓出曲线:减速至行程一半,然后加速。 | ![]() |
Easing.InCirc | 圆函数(sqrt(1-t^2))的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutCirc | 圆函数(sqrt(1-t^2))的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutCirc | 圆函数(sqrt(1-t^2))的缓动曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInCirc | 圆函数(sqrt(1-t^2))的缓入/缓出曲线:减速至中途,然后加速。 | ![]() |
Easing.InElastic | 弹性(指数衰减正弦波)函数的缓动曲线:从零速度开始加速。 峰值振幅可通过振幅参数设置,衰减周期可通过周期参数设置。 | ![]() |
Easing.OutElastic | 弹性(指数衰减正弦波)函数的缓动曲线:减速至零速度。 峰值振幅可通过振幅参数设置,衰减周期可通过周期参数设置。 | ![]() |
Easing.InOutElastic | 弹性(指数衰减正弦波)函数的缓冲曲线:加速至一半距离,然后减速。 | ![]() |
Easing.OutInElastic | 弹性(指数衰减正弦波)函数的缓入曲线:减速至半程,然后加速。 | ![]() |
Easing.InBack | 回弹(过冲立方函数:(s+1)*t^3 - s*t^2)缓入的缓动曲线:从零速度开始加速。 | ![]() |
Easing.OutBack | 回弹(过冲三次函数:(s+1)*t^3 - s*t^2)淡出缓动曲线:减速至零速度。 | ![]() |
Easing.InOutBack | 回弹(过冲立方函数:(s+1)*t^3 - s*t^2)进出缓动曲线:加速至中途,然后减速。 | ![]() |
Easing.OutInBack | 回弹的缓入/缓出曲线(过冲三次方缓入/缓出:(s+1)*t^3 - s*t^2):减速至中途,然后加速。 | ![]() |
Easing.InBounce | 反弹(指数衰减抛物线反弹)函数的缓入/缓出曲线:从零速度开始加速。 | ![]() |
Easing.OutBounce | 反弹(指数衰减抛物线反弹)函数的缓动曲线:减速至零速度。 | ![]() |
Easing.InOutBounce | 反弹(指数衰减抛物线反弹)函数的缓入/缓出:加速至中途,然后减速。 | ![]() |
Easing.OutInBounce | 用于反弹(指数衰减抛物线反弹)函数的缓入/缓出平滑曲线:减速至中途,然后加速。 | ![]() |
Easing.BezierSpline | 由 easing.bezierCurve 属性定义的自定义缓动曲线。 |
easing.amplitude 仅适用于反弹和弹性曲线(类型为Easing.InBounce 、Easing.OutBounce 、Easing.InOutBounce 、Easing.OutInBounce 、Easing.InElastic 、Easing.OutElastic 、Easing.InOutElastic 或Easing.OutInElastic 的曲线)。
easing.overshoot 仅当easing.type 为以下值时才适用:Easing.InBack 、Easing.OutBack 、Easing.InOutBack 或Easing.OutInBack 。
easing.period 仅当 easing.type 为:Easing.InElastic 、Easing.OutElastic 、Easing.InOutElastic 或Easing.OutInElastic 时才适用。
easing.bezierCurve 仅当 easing.type 为:Easing.BezierSpline 时才适用。该属性是一个 list<real>,包含从 0,0 到 1,1 定义曲线的三个点组——控制点 1、控制点 2 和终点:[cx1, cy1, cx2, cy2, endx, endy, ...]。 最后一个点必须为 1,1。
有关不同缓动设置的演示,请参阅“缓动曲线”。
from : real
该属性存储动画的起始值。
如果动画器(Animator)是在Transition 或Behavior 中定义的,则该值默认为Transition 的起始状态中定义的值,或者在Behavior 被触发时该属性的当前值。
另请参阅 《Qt Quick 》中的“动画和过渡”部分。
target : QtQuick::Item
该属性存储动画器的目标项。
注意:动画器的 目标必须是基于项的类型。
to : real
该属性保存动画的结束值。
如果动画器(Animator)是在“动画状态”(Transition )或“动画状态组”(Behavior )中定义的,则该值默认为“动画状态”(Transition )的结束状态中定义的值,或者触发“动画状态”(Behavior )的属性更改的值。
© 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.








































