Qt Quick 中的重要概念--状态、转换和动画

在任何现代用户界面中,状态之间的转换和用户界面动画都是非常有益的。这些都是Qt Quick 中的一级概念。

本页介绍了状态、状态转换和属性动画的概念。它详细说明了哪些概念是重要的、为什么以及这些概念之间的相互关系。它还提供了有关Qt Quick 为实现这些概念而提供的 QML 类型的详细链接。

状态

特定可视化项目的状态是一组信息,它描述了可视化项目的各个组成部分在其中的显示方式和位置,以及与该状态相关的所有数据。用户界面中的大多数可视化项目都有数量有限的状态,每种状态都有明确定义的属性。

例如,列表中的元素可能被选中或未被选中,如果被选中,它可能是当前活动的单个选择,也可能是选择组的一部分。

每种状态都可能有相关的视觉外观(中性、突出显示、展开等)。

Qt Quick 在 类型中,States 提供了定义其语义的属性,并可用于触发行为或动画。更多信息,请参阅State Qt Quick 状态文档。

过渡

当一个可视化项目从一种状态过渡到另一种状态时,该项目的外观会发生变化。过渡是两个状态之间的 "边缘"。它可能会触发其他事件,因为应用程序的其他部分可能会在进入或离开特定状态时触发行为。

Qt Quick Transition 提供了一种类型,它的属性定义了应用程序从一种状态转换到另一种状态时会发生什么。有关转换的更多信息,请参阅 "状态更改期间的转换 "文档。

动画

在状态之间转换时,可以使用流体动画来帮助用户完成转换。可视化画布的突然和意外变化会导致不理想的用户体验,因此应避免。

如果列表中的某个元素被选中,颜色的变化(从中性到高亮)可以是动画的。如果元素在列表中的位置发生变化,则可以流畅的动画方式进行移动,这样用户的眼睛就能跟踪到变化。

Qt Quick 通过各种动画和过渡类型支持这些类型的动画。有关这些类型的信息和使用方法,请参阅 Qt Quick 中的 动画和过渡文档。

动画属性分配

动画不仅与状态和状态之间的转换有关。例如,动画可能由其他事件触发,而这些事件与不同的状态无关。

Qt Quick 提供了Behavior 类型,允许客户端为属性的变化指定动画行为。Behavior 类型是 QML 对象属性修改器的一个例子。

有关使用Behavior 类型提供默认属性变化动画的更多信息,请参阅有关默认属性动画的文档。

值得注意的是,将默认属性动画(通过Behavior 类型)与状态转换动画结合使用,有时会导致出现未定义的行为。有关此主题的更多信息,请参阅有关使用Qt Quick 行为与状态的文档。

动画

Animator 类型是一种特殊的动画类型,它绕过 QML 对象,直接对场景图中的基元进行操作。这样做的好处是,基于 Animator 的动画可以在场景图的渲染线程上运行(如适用),即使用户界面被阻塞,动画也能继续进行。

Qt Quick 该工具提供了以下动画器类型:

动画精灵

动画精灵的概念与本页其他地方使用的动画概念是分开的。如果您想创建或使用动画图像或精灵,请参阅有关精灵动画的文档。

© 2025 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.