Qml-Transition的使用
Qml-Transition的使用
Transition的概述
- Transition:定义了当状态发生改变时应用的动画
- 属性animations : list:(Transition)过渡的动画
- 属性enabled : bool:状态发生变化时,是否使能此过渡(Transition)动画;
- 属性from : string:过渡的起始状态(State)名称,默认为"*"(任何状态)
- 属性to : string:过渡的结束状态(State)名称,默认为"*"(任何状态)
- 属性reversible : bool:当触发此变换的条件反转时是否应自动反转转换
- 属性running : bool:只读(read-only),当前状态是否发生
- 注意:默认情况下,任何状态的修改,都会触发过渡动画。可以通过设置动画的from和to,来限制 只从一个状态到另一个状态的特定应用
- 注意:如果定义了多个过渡动画,会并行运行过渡动画,如果想过渡动画串行运行需要使用SequentialAnimation
- 注意:如果状态绑定的属性和Behavior绑定的属性一致时,过渡动画会覆盖Behavior动画,即过渡动画生效,Behavior动画不生效
- 注意:revesible的生效和PropertyChange 中restoreEntryValues属性有关系,restoreEntryValues 为false,不会生效。在本demo中,如果过渡有多个动画,revesible 生效需要同时满足:多个动画是串行动画(SequentialAnimation)且 from或to 属性要设置至少其中一个
- 注意:如果有多个过渡可供选择,会有个匹配规则,如果指定了from 和 to ,匹配指定的from和to,然后匹配指定了单个的,最后匹配“*”;比如状态有state1,state2,state3; Transition有 Transition{ id:t1;from:“state1”; to:“state2”},Transition{id:t2;to:“state2”},Transition{id:t3;xxx}
a. 当状态从state1~state2 变化,优先选 t1
b.当状态从 state3~state2变化,优先选 t2
c.当状态从 state1 ~state3变化,优先选t3
Transition的实例代码
import QtQuick//Transition 定义了当状态发生改变时应用的动画。
//在过渡动画中,可以不用显示设置动画的from和to 值,默认会将from值设置为当前状态值,to 设置目标状态值
//注意:默认情况下,任何状态的修改,都会触发过渡动画。可以通过设置动画的from和to,来限制 只从一个状态到另一个状态的特定应用
//注意:如果定义了多个过渡动画,会并行运行过渡动画,如果想过渡动画串行运行需要使用SequentialAnimation
//注意:如果状态绑定的属性和Behavior绑定的属性一致时,过渡动画会覆盖Behavior动画,即过渡动画生效,Behavior动画不生效//Transition: 过渡动画// animations : list<Animation> :过渡动画列表// enabled : bool// from : string: 起始状态(State)名称// to : string: 终止状态(State)名称// reversible : bool:当触发此变换的条件反转时是否应自动反转转换// running : bool//注意reversible:只有设置为串行动画,且 from或to 设置某个值,reversible = true 才会可逆的运行动画。//同时reversible的效果还受 PropertyChanges 中的 restoreEntryValues 影响,如果restoreEntryValues:false 也不会生效Rectangle{anchors.fill: parentRow{id:idRow1spacing: 20//按下会修改高度为50,颜色为green,释放被还原,动画时并行的Rectangle {id:idRec1width: 100; height: 100color: "blue"states: [State {name: "state1"when: idMoArea.pressed; //当鼠标按下触发状态PropertyChanges {target: idRec1restoreEntryValues: true //true 状态离开会还原为默认值height: 50color:"green"}}]transitions: [Transition {reversible: trueto:"state1"//两个动画时并行的SequentialAnimation{NumberAnimation{property: "height"duration: 2000}ColorAnimation {duration: 2000}}}]MouseArea{id:idMoAreaanchors.fill: parent}}Rectangle {id:idRec2width: 100; height: 100color: "blue"states: [State {name: "state1"// when: idMoArea2.pressed; //当鼠标按下触发状态PropertyChanges {target: idRec2height: 50color:"green"}},State {name: "state2"// when: idMoArea2.pressed; //当鼠标按下触发状态PropertyChanges {target: idRec2height: 80color:"red"}}]transitions: [Transition {to:"state1" //如果明确指定了to state1,只能匹配to "state1"NumberAnimation{property: "height"duration: 2000}ColorAnimation {duration: 2000}},Transition {//两个动画时并行的NumberAnimation{property: "height"duration: 500}ColorAnimation {duration: 500}onRunningChanged: {if(running)console.log("default transition")}}]MouseArea{id:idMoArea2anchors.fill: parentonClicked: {parent.state = "state2"}}}Rectangle {id:idRec3width: 100; height: 100color: "blue"states: [State {name: "state1"when: idMoArea3.pressed; //当鼠标按下触发状态PropertyChanges {target: idRec3restoreEntryValues: true //true 状态离开会还原为默认值height: 50color:"green"}}]transitions: [Transition {reversible: true//两个动画时并行的NumberAnimation{property: "height"duration: 2000}ColorAnimation {duration: 2000}}]MouseArea{id:idMoArea3anchors.fill: parent}}}}
Transition实例代码运行结果如下:
1.从左到右:第一个矩形鼠标按下后先高度变为50在由蓝色变为绿色,鼠标释放,可逆操作发生,先绿色变为蓝色再由高度50变为100;可以对比第一个和第三个,第三个矩形可逆顺序不对。第二个矩形验证任何状态发生变化时,会选择一个最适配的过渡去运行。
2.效果图如下:

相关文章:
Qml-Transition的使用
Qml-Transition的使用 Transition的概述 Transition:定义了当状态发生改变时应用的动画属性animations : list:(Transition)过渡的动画属性enabled : bool:状态发生变化时,是否使能此过渡(Transition)动画…...
Notepad++检索包含多个关键字的行
Notepad检索包含多个关键字的行 在Notepad中,你可以使用正则表达式来检索包含多个关键字的行。以下是具体步骤: 打开Notepad,打开要搜索的文件。 点击菜单栏上的“搜索”选项,然后选择“查找”。 在弹出的查找对话框中…...
C语言:水仙花树,要求三位以上的N位整数每位的N次方等于数本身,全部输出出来
#include <stdio.h> int main() { int n; scanf("%d",&n);//这里是说明多少n位整数 int first1; int i1; while(i<n){//此while循环可以得到n位数的最小位,例如3位的100. first*10; i; } ifirst; whil…...
金融贷款口子超市V2源码 Thinkphp开发的贷款和超市平台源码(亲测源码含安装视频教程)
金融贷款口子超市V2源码 Thinkphp开发的贷款和超市平台源码 源码下载:https://download.csdn.net/download/m0_66047725/89938268 更多资源下载:关注我。...
redis的三种客户端
在 Redis 中,常用的 Java 客户端有三种:Jedis、Lettuce 和 Redisson。它们各有特点,适用于不同的场景。以下是它们的详细介绍,以及如何在 Spring Boot 中集成 Redis。 一、Redis 三种常用客户端详解 1.1 Jedis Jedis 是 Redis 官…...
边缘计算【智能+安全检测】系列教程--agx orin解决RTC时间问题
因为是离线运行,首要问题是时间不准确,就在主板上加装了纽扣电池,但是会有一系列问题,比如无法将RTC时间回写到系统时间,或者无法将系统时间写到RTC中等等一些列问题。为解决这些问题,一劳永逸的方式&#…...
数据库动态扩容:Java实现与技术策略
引言 数据库动态扩容是应对数据量增长和业务需求变化的关键技术。它允许数据库系统在不停机的情况下,通过增加或减少资源来适应业务负载的变化。本文将详细介绍数据库动态扩容的工作原理、技术策略,并提供Java代码示例。 1. 数据库动态扩容的工作原理 …...
Golang | Leetcode Golang题解之第525题连续数组
题目: 题解: func findMaxLength(nums []int) (maxLength int) {mp : map[int]int{0: -1}counter : 0for i, num : range nums {if num 1 {counter} else {counter--}if prevIndex, has : mp[counter]; has {maxLength max(maxLength, i-prevIndex)} …...
低代码架构浅析
低代码的定义与应用场景 定义 低代码平台是一种通过可视化工具和预定义组件实现快速应用开发的环境,显著减少了编码量。它旨在简化开发流程,加快应用交付,提高开发效率,使非技术人员也能参与应用开发。 应用场景 企业内部应用 …...
mysql字段是datetime如何按照小时来统计
在 MySQL 中,如果你有一个包含 DATETIME 类型的列,并且你想按照小时来统计数据,可以使用 DATE_FORMAT 函数将 DATETIME 列格式化为仅包含日期和小时的形式,然后使用 GROUP BY 子句来分组。 假设你有一个名为 events 的表…...
nacos快速启动
预备环境准备: 确保是64 bit OS(推荐Linux/Unix/Mac),安装64 bit JDK 1.8并下载&配置,安装Maven 3.2.x并下载&配置。 下载源码或者安装包: 从Github上下载源码方式: git clone https://…...
@Excel若依导出异常/解决BusinessBaseEntity里面的字段不支持导出
今天发现所有实体类继承BusinessBaseEntity里面的这些通用字段不支持导出,debug时发现是这样: 导出效果 这里我把能查到的方法都汇总了,如果你也遇到这个异常,可以去逐步排查 1.先看库里有没有数据 2.看字段名是否对齐 3.所需要…...
虚拟机 Email 恢复专用工具:Virtual Machine Email Recovery
天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 SysTools 系列数据恢复、取证及…...
代理人工智能如何应对现代威胁的速度和数量
Seven AI首席执行官 Lior Div 讨论了代理 AI 的概念及其在网络安全中的应用。他解释了代理 AI 与传统自动化安全系统的区别,即代理 AI 具有更大的自主性和决策能力。 Div 强调,通过实时处理大量警报,代理 AI 特别适合对抗现代 AI 驱动的威胁…...
element-plus版本过老,自写选项弹框增删功能
title: element-plus版本过老,自写选项弹框增删功能 date: 2024-10-31 10:53:18 tags: element-plus 1.情景 发现代码怎么都用不了el-select的#footer插槽从而实现不了相关的操作,发现el-select自带的管理相关数据的属性popper-class用不了。 2.原因与…...
Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…...
计算机后台服务-更新下载,重启————未来之窗行业应用跨平台架构
一在教育中应用 1. 提高效率:能够快速收集大量学生的卷子,节省了传统人工收集和整理的时间。 2. 准确性:减少了人工收卷过程中可能出现的错漏和混乱,确保每份卷子都能准确无误地被收集和记录。 3. 即时性:可以实时接收…...
springcloud通过MDC实现分布式链路追踪
在DDD领域驱动设计中,我们使用SpringCloud来去实现,但排查错误的时候,通常会想到Skywalking,但是引入一个新的服务,增加了系统消耗和管理学习成本,对于大型项目比较适合,但是小的项目显得太过臃…...
logback日志级别动态切换四种方案
生产环境中经常有需要动态修改日志级别。 现在就介绍几种方案 方案一:开启logback的自动扫描更新 配置如下 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug…...
AI视频管理平台中使用目标检测模型中的NMS参数原理及设置原则
目标检测模型中的NMS参数原理及设置原则 在目标检测模型中,非极大值抑制(Non-Maximum Suppression,简称NMS)是一种常用的后处理技术,用于筛选和保留最佳的检测框。本文将详细介绍NMS的原理、参数设置原则以及实际应用…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
