在本页

Animator QML Type

是所有 QML 动画的基础。更多

Import Statement: import QtQuick
Inherits:

Animation

Inherited By:

OpacityAnimator, RotationAnimator, ScaleAnimator, UniformAnimator, XAnimator, and YAnimator

属性

详细说明

Animator 类型是一种特殊的动画类型,它直接在Qt Quick 的场景图上操作,而不是像普通的 Animation 类型那样在 QML 对象及其属性上操作。这样做的好处是,即使用户界面线程被阻塞,基于 Animator 的动画也能在场景图的渲染线程制作动画。

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
    }
}

如果ParallelAnimationSequentialAnimation 的所有子动画都是 Animator 类型,那么ParallelAnimationSequentialAnimation 也将被视为 Animator,并尽可能在场景图的渲染线程上运行。

Animator 类型可用于过渡期间的动画,但不支持reversible 属性。

Animator 类型不能在 QML 文件中直接使用。它的存在是为了提供一组通用属性和方法,供所有继承自它的其他动画类型使用。试图直接使用 Animator 类型会导致错误。

注: 在使用非线程渲染循环时,动画类型没有任何益处。

注: 建议应用程序考虑基于多线程、异步原则的设计,而不是依赖 Animator 来显示动画内容,同时在主(GUI)线程上执行昂贵的阻塞操作。在 QML 中使用WorkerScriptasynchronous image loading ,在 C++ 中使用工作线程、并行算法,而不是冗长的阻塞操作、 Qt Concurrent和 C++ 中的例程,从而使整个应用程序和用户界面始终保持响应。

属性文档

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^2) 的缓和曲线:从零开始加速。四边形宽松曲线
Easing.OutQuad二次函数(t^2)的缓和曲线:减速至零速度。四外宽松曲线
Easing.InOutQuad二次函数 (t^2) 的平缓曲线:加速到一半,然后减速。四边形宽松曲线
Easing.OutInQuad二次函数 (t^2) 的缓和曲线:减速至一半,然后加速。四边形宽松曲线
Easing.InCubic三次(t^3)函数的缓和曲线:从零加速。立方体缓和曲线
Easing.OutCubic三次(t^3)函数的平缓曲线:减速至零速。外立方缓和曲线
Easing.InOutCubic三次(t^3)函数的平缓曲线:加速到一半,然后减速。InOutCubic 缓和曲线
Easing.OutInCubic三次(t^3)函数的缓和曲线:减速至一半,然后加速。OutInCubic 缓和曲线
Easing.InQuart四次函数 (t^4) 的缓和曲线:从零加速。InQuart 缓解曲线
Easing.OutQuart四次函数 (t^4) 的缓和曲线:减速至零速。外曲缓和曲线
Easing.InOutQuart四次(t^4)函数的平缓曲线:加速到一半,然后减速。InOutQuart 缓和曲线
Easing.OutInQuart四次函数 (t^4) 的缓和曲线:减速至一半,然后加速。OutInQuart 缓解曲线
Easing.InQuint五次函数 (t^5) 的缓和曲线:从零加速。InQuint 舒缓曲线
Easing.OutQuint五次函数 (t^5) 的缓和曲线:减速至零速。外币宽松曲线
Easing.InOutQuint五次函数(t^5)的平缓曲线:加速到一半,然后减速。InOutQuint 缓和曲线
Easing.OutInQuint五次函数(t^5)的缓和曲线:减速至一半,然后加速。OutInQuint 缓和曲线
Easing.InSine正弦函数(sin(t))的缓和曲线:从零加速。正弦曲线
Easing.OutSine正弦(sin(t))函数的平缓曲线:减速至零速。正弦曲线
Easing.InOutSine正弦(sin(t))函数的缓和曲线:加速到一半,然后减速。正余弦缓和曲线
Easing.OutInSine正弦(sin(t))函数的缓和曲线:减速至一半,然后加速。正弦曲线
Easing.InExpo指数函数 (2^t) 的缓和曲线:从零加速。InExpo 缓解曲线
Easing.OutExpo指数 (2^t) 函数的缓和曲线:减速至零速。OutExpo 缓解曲线
Easing.InOutExpo指数 (2^t) 函数的平缓曲线:加速到一半,然后减速。InOutExpo 缓解曲线
Easing.OutInExpo指数 (2^t) 函数的缓和曲线:减速至一半,然后加速。OutInExpo 缓解曲线
Easing.InCirc圆 (sqrt(1-t^2)) 函数的缓和曲线:从零加速。InCirc 宽松曲线
Easing.OutCirc圆 (sqrt(1-t^2)) 函数的平缓曲线:减速至零速度。外循环宽松曲线
Easing.InOutCirc圆周 (sqrt(1-t^2)) 函数的平缓曲线:加速到一半,然后减速。InOutCirc 缓解曲线
Easing.OutInCirc圆 (sqrt(1-t^2)) 函数的缓和曲线:减速至一半,然后加速。OutInCirc 缓解曲线
Easing.InElastic弹性(指数衰减正弦波)函数的缓和曲线:从零速度开始加速。
可以用振幅参数设置峰值振幅,用周期参数设置衰减周期。
弹性宽松曲线
Easing.OutElastic弹性(指数衰减正弦波)函数的缓和曲线:减速至零速。
峰值振幅可通过振幅参数设置,衰减周期可通过周期参数设置。
外弹性宽松曲线
Easing.InOutElastic弹性(指数衰减正弦波)函数的缓和曲线:加速到一半,然后减速。输入输出弹性宽松曲线
Easing.OutInElastic弹性(指数衰减正弦波)函数的缓和曲线:减速至一半,然后加速。输出输入弹性宽松曲线
Easing.InBack后退(过冲三次函数:(s+1)*t^3 - s*t^2)的缓和曲线:从零加速。InBack 宽松曲线
Easing.OutBack后退的缓和曲线(过冲三次函数:(s+1)*t^3 - s*t^2)缓和退出:减速至零速度。OutBack 放宽曲线
Easing.InOutBack后退的缓和曲线(过冲三次函数:(s+1)*t^3 - s*t^2)缓入/缓出:加速到一半,然后减速。内向外回放曲线
Easing.OutInBack回弹的缓和曲线(过冲三次函数缓和:(s+1)*t^3 - s*t^2)缓和输出/输入:减速至中途,然后加速。OutInBack 缓解曲线
Easing.InBounce反弹(指数衰减抛物线反弹)函数的缓和曲线:从零开始加速。InBounce 宽松曲线
Easing.OutBounce弹跳(指数衰减抛物线弹跳)函数的平缓曲线:减速至零速。反弹曲线
Easing.InOutBounce弹跳(指数衰减抛物线弹跳)函数的缓进/缓出曲线:加速到一半,然后减速。InOutBounce 宽松曲线
Easing.OutInBounce弹跳(指数衰减抛物线弹跳)函数的缓和曲线 缓出/缓入:减速至一半,然后加速。OutInBounce 缓解曲线
Easing.BezierSpline由 easing.bezierCurve 属性定义的自定义缓和曲线。

easing.amplitude 仅适用于反弹和弹性曲线(类型为Easing.InBounce,Easing.OutBounce,Easing.InOutBounce,Easing.OutInBounce,Easing.InElastic,Easing.OutElastic,Easing.InOutElasticEasing.OutInElastic 的曲线)。

easing.overshoot 仅适用于easing.typeEasing.InBack,Easing.OutBack,Easing.InOutBackEasing.OutInBack

easing.period 仅当 easing.type 为:Easing.InElastic,Easing.OutElastic,Easing.InOutElasticEasing.OutInElastic

easing.bezierCurve 仅当 easing.type 为:Easing.BezierSpline 时才适用。此属性是一个 list<real>(列表<real>),包含从 0,0 到 1,1 定义曲线的三个点 - control1、control2、end point:[cx1、cy1、cx2、cy2、endx、endy、...]。最后一点必须是 1,1。

有关不同缓和设置的演示,请参阅缓和曲线

from : real

此属性保存动画的起始值。

如果 Animator 定义在TransitionBehavior 中,则该值默认为Transition 的起始状态中定义的值,或Behavior 被触发时该属性的当前值。

另请参阅 Qt Quick 中的动画和过渡

target : QtQuick::Item

此属性包含动画器的目标项目。

注: 动画器目标必须是基于项目的类型。

to : real

此属性保存动画的结束值。

如果 Animator 定义在TransitionBehavior 中,则该值默认为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.