用户界面的各个部分可以用状态(state)来描述。状态定义了一组属性更改,并且可以由特定条件触发。这些状态可以附加过渡(transition),过渡定义发生状态更改时要运行的动画或动作。

一、状态(state、states和State)

state属性用于保存当前item的状态。states属性被指定为State对象的数组。任何State属性都要放在states数组中。

State元素定义了当前item的一系列状态。State的name属性表示状态的名称。name属性默认是一个空字符串。 可以通过将此name设置为空字符串来将item恢复为默认状态。除了name外,State元素还包含了一系列的PropertyChanges元素,PropertyChanges和State绑定,内部定义了在对应状态下的作用目标(target)和相应的属性值。 这样,可以在状态变化时,更改对应目标的属性值。

示例

import QtQuick 2.9Item {id: rootwidth: 640height: 480state: "stop"Rectangle {id:light1x:30y:30width: light1.x+parent.width/3height: light1.widthcolor: "yellow"border.color: "black"radius: light1.width/2}Rectangle {id:light2x:light1.width+2*light1.xy:light1.ywidth: light1.widthheight: light1.heightcolor: "yellow"border.color: "black"radius: light1.width/2}states: [State {name: "stop"; when:mouseare.pressedPropertyChanges {target: light1color:"black"}PropertyChanges {target: light2color:"red"}},State {name: "go"PropertyChanges {target: light1color:"green"}PropertyChanges {target: light2color:"black"}}]MouseArea {id:mouseareaanchors.fill: rootonClicked: {if (root.state=="go") {root.state="stop"}else {root.state="go"}}}
}

上述代码使用rectangle画圆(只需要将rectangle的width和height设为相同的值,然后radius属性设为height或者width的一半即可)。在states中定义了stop和go两种状态,然后状态变换时,light1和light2对应进行变化。此外,states中的State的name属性还可以和when连用,格式是name:"state val";when condition

二、过渡(transitions和Transition)

状态更改时,过渡此时可以运行状态变化是的动画或者动作。可以使用from和to属性定义从某个特定状态切换到其他状态时的过渡。from和to后面还可以接通配符*,表示任何状态。

transitions的作用和states是等同的,Transition和State是等同的

示例

将下面代码添加到上述代码的最后面

transitions: [Transition {from: "go"to: "stop"ColorAnimation {target:light1property:"color"duration: 1000}ColorAnimation {target:light2property:"color"duration: 1000}},Transition {from: "stop"to: "go"ColorAnimation {target:light1property:"color"duration: 1000}ColorAnimation {target:light2property:"color"duration: 1000}}]

上述两个Transition只是from和to不同,而且状态较少,可以使用通配符指定任何过渡状态

transitions: [Transition {from: "*"to: "*"ColorAnimation {target:light1property:"color"duration: 1000}ColorAnimation {target:light2property:"color"duration: 1000}}]

效果完全

参考

《qml book》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

6.QML动画——状态与过渡相关推荐

  1. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第二篇:使用Animator控制跑酷角色的动画状态切换

    文章目录 一.前言 二.制作一段跳.二段跳动画 三.编辑动画控制器 四.运行效果 一.前言 嗨,大家好,我是新发,今天是大年初二,大家牛年快乐,牛气冲天. 我打算写一篇使用Unity制作像天天酷跑一样 ...

  2. QML动画分组(Grouped Animations)

    通常使用的动画比一个属性的动画更加复杂.例如你想同时运行几个动画并把他们连接起来,或者在一个一个的运行,或者在两个动画之间执行一个脚本.动画分组提供了很好的帮助,作为命名建议可以叫做一组动画.有两种方 ...

  3. QML动画实战指南:打造华丽且高性能的用户界面动效

    目录标题 引言 QML与Qt Quick简介 动画在现代UI设计中的重要性 QML Animation模块概述 QML动画基础概念 属性动画(PropertyAnimation) 父动画(Parent ...

  4. Roson的Qt之旅#49 QML动画之Behavior

    1.继承关系 Behavior和Animation之间不存在继承关系,但是Behavior有一个成员变量是Animation类型的: [default] animation : Animation 2 ...

  5. framer x使用教程_如何使用Framer Motion将交互式动画和页面过渡添加到Next.js Web应用程序

    framer x使用教程 The web is vast and it's full of static websites and apps. But just because those apps ...

  6. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

    对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...

  7. Unity动画状态的获取和常用判断(逐步完善)

    AnimatorStateInfo minfo = m_animator.GetCurrentAnimatorStateInfo(0); 其中参数0代表Base Layer GetCurrentAni ...

  8. android自定义过渡动画,11.自定义过渡动画

    11.1 问题 应用程序需要自定义Activity切换或Fragment切换时产生的过渡动画. 11.2 解决方案 (API Level 5) 要修改Activity间的过渡动画,可以使用overri ...

  9. 项目实训(十六)FPS游戏之PUN角色位移同步,动画状态同步

    文章目录 前言 一.PUN角色位移同步 二.PUN角色动画状态同步 前言 FPS游戏之PUN角色位移同步,动画状态同步 一.PUN角色位移同步 首先添加一个photon transform view的 ...

最新文章

  1. oracle数据库增加新字段
  2. tikhonov正则化 matlab_4 L1和l2正则化详解(花书7.1 参数范数惩罚)
  3. 得到按钮句柄后如何点集_RepPoint:可形变卷积生成的目标轮廓点集
  4. python 生成图片_python生成带有表格的图片
  5. 如何去除数据表中的重复数据
  6. 理解Python装饰器(Decorator)
  7. OpenFire 安装及配置
  8. 堆密度测定的意义_测定颗粒真密度的意义是什么
  9. Python练习——用循环求100以内7的倍数
  10. Scratch所有积木
  11. 基于数据挖掘的智能停车场运营数据分析系统
  12. Load balancer does not have available server for client问题
  13. python plot画简单的曲线图
  14. pixel2升级android11 开电信volte失败记录
  15. plc和单片机哪个更有前途?为什么本科生都不搞plc?
  16. Pandas dataframe 遇到ix报错问题
  17. 为何“爱辞职”成为了90后的又一标签?
  18. visibilitychange关于浏览器选项卡切换事件
  19. office972003_九年级化学《常见的碱》教学案例与教学反思microsoftofficeword972003.doc...
  20. SQL*Plus 学习笔记——常用编辑命令

热门文章

  1. vue.js仿饿了么app---webpack配置项
  2. 目标跟踪之camshift---opencv中meanshift和camshift例子的应用
  3. scikit-learn库中聚类算法自定义距离度量方式
  4. element,点击查看,实现tab切换:
  5. 开发版速达与总部原版速达的优势
  6. mvn打包的POm文件
  7. 前端模块化,AMD与CMD的区别
  8. SQLServer学习笔记系列6
  9. 读书笔记:《Aspx开发200问》——如何实现Repeater控件的分页
  10. 《LeetCode力扣练习》剑指 Offer 15. 二进制中1的个数 Java