Qt Quick 中的重要概念——状态、状态转换和动画
在任何现代用户界面中,状态之间的过渡和用户界面的动画效果都大有裨益。这些是Qt Quick 中的核心概念。
本页介绍了状态、状态转换和属性动画的概念。它详细说明了哪些概念很重要以及原因,并阐述了这些概念之间的相互关系。此外,本页还提供了关于Qt Quick 提供的用于实现这些概念的 QML 类型的深入说明链接。
状态
特定视觉项的状态,是指描述该视觉项中各个组成部件如何以及在何处显示的一组信息,以及与该状态相关的所有数据。用户界面中的大多数视觉项都有有限数量的状态,每个状态都有明确定义的属性。
例如,列表中的一个元素可以是被选中的,也可以是未被选中的;如果被选中,它可能是当前活动的单个选中项,也可能是选中组的一部分。
每种状态都可能具有特定的视觉外观(中性、高亮、展开等)。
Qt Quick State 提供了一种类型,其属性定义了该类型的语义,并可用于触发行为或动画。有关更多信息,请参阅关于Qt Quick 状态的文档。
状态转换
当一个视觉项从一种状态过渡到另一种状态时,该项的外观将会发生变化。过渡是两个状态之间的“边界”。它可能会触发其他事件的发生,因为应用程序的其他部分可能具有在进入或退出特定状态时被触发的行为。
Qt Quick Transition 类型提供了用于定义应用程序从一种状态切换到另一种状态时将发生什么的属性。有关过渡的更多信息,请参阅“状态变化期间的过渡”文档。
动画
在状态之间过渡时,可以使用流畅的动画来辅助用户完成过渡。视觉画布上突兀且出乎意料的变化会导致用户体验不佳,应予以避免。
如果列表中的某个元素被选中,其颜色变化(从中性色变为高亮色)可以采用动画效果呈现。如果该元素在列表中的位置发生变化,可以以流畅的动画效果进行移动,以便用户视线能够跟随变化。
Qt Quick 通过多种动画和过渡类型支持此类动画。有关这些类型及其使用方法的详细信息,请参阅 Qt Quick 中的“动画与过渡”文档。
属性赋值的动画效果
动画不仅与状态以及状态之间的过渡相关。例如,动画可能由其他事件触发,而这些事件并不与特定状态相关联。
通常,无论变化由何种原因引起(例如不透明度效果),始终对视觉项的某些属性变化添加动画效果都是有益的。Qt Quick 提供了Behavior 类型,允许客户端为属性变化指定动画行为。Behavior 类型就是 QML 对象属性修饰符的一个示例。
有关如何使用 `Behavior ` 类型提供默认属性变化动画的更多信息,请参阅关于默认属性动画的文档。
需要注意的是,将默认属性动画(通过Behavior 类型)与状态转换动画结合使用时,有时可能会导致出现未定义的行为。有关此主题的更多信息,请参阅关于在状态中使用Qt Quick 行为的文档。
动画器
Animator 类型是一种特殊的动画类型,它绕过QML对象,直接作用于场景图中的基本元素。其优点在于,基于Animator的动画可以在场景图的渲染线程上运行(在适用情况下),并且即使UI被阻塞,动画仍可继续进行。
Qt Quick 提供以下 Animator 类型:
- XAnimator - 控制Item 的水平位置。
- YAnimator - 控制Item 的垂直位置。
- ScaleAnimator - 控制Item 的缩放因子。
- RotationAnimator - 控制Item 的旋转动画。
- OpacityAnimator - 对Item 的透明度进行动画处理。
- UniformAnimator - 对ShaderEffect 中的uniform进行动画处理。
动画精灵
动画精灵的概念与本页面其他地方提到的动画概念不同。如果您想创建或使用动画图像或精灵,请参阅关于精灵动画的文档。
© 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.