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的原理、参数设置原则以及实际应用…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
