当前位置: 首页 > news >正文

Qml-Transition的使用

Qml-Transition的使用

Transition的概述

  1. Transition:定义了当状态发生改变时应用的动画
  2. 属性animations : list:(Transition)过渡的动画
  3. 属性enabled : bool:状态发生变化时,是否使能此过渡(Transition)动画;
  4. 属性from : string:过渡的起始状态(State)名称,默认为"*"(任何状态)
  5. 属性to : string:过渡的结束状态(State)名称,默认为"*"(任何状态)
  6. 属性reversible : bool:当触发此变换的条件反转时是否应自动反转转换
  7. 属性running : bool:只读(read-only),当前状态是否发生
  8. 注意:默认情况下,任何状态的修改,都会触发过渡动画。可以通过设置动画的from和to,来限制 只从一个状态到另一个状态的特定应用
  9. 注意:如果定义了多个过渡动画,会并行运行过渡动画,如果想过渡动画串行运行需要使用SequentialAnimation
  10. 注意:如果状态绑定的属性和Behavior绑定的属性一致时,过渡动画会覆盖Behavior动画,即过渡动画生效,Behavior动画不生效
  11. 注意:revesible的生效和PropertyChange 中restoreEntryValues属性有关系,restoreEntryValues 为false,不会生效。在本demo中,如果过渡有多个动画,revesible 生效需要同时满足:多个动画是串行动画(SequentialAnimation)且 fromto 属性要设置至少其中一个
  12. 注意:如果有多个过渡可供选择,会有个匹配规则,如果指定了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&#xff1a;定义了当状态发生改变时应用的动画属性animations : list&#xff1a;(Transition)过渡的动画属性enabled : bool&#xff1a;状态发生变化时&#xff0c;是否使能此过渡&#xff08;Transition&#xff09;动画…...

Notepad++检索包含多个关键字的行

Notepad检索包含多个关键字的行 在Notepad中&#xff0c;你可以使用正则表达式来检索包含多个关键字的行。以下是具体步骤&#xff1a; 打开Notepad&#xff0c;打开要搜索的文件。 点击菜单栏上的“搜索”选项&#xff0c;然后选择“查找”。 在弹出的查找对话框中&#xf…...

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开发的贷款和超市平台源码 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89938268 更多资源下载&#xff1a;关注我。...

redis的三种客户端

在 Redis 中&#xff0c;常用的 Java 客户端有三种&#xff1a;Jedis、Lettuce 和 Redisson。它们各有特点&#xff0c;适用于不同的场景。以下是它们的详细介绍&#xff0c;以及如何在 Spring Boot 中集成 Redis。 一、Redis 三种常用客户端详解 1.1 Jedis Jedis 是 Redis 官…...

边缘计算【智能+安全检测】系列教程--agx orin解决RTC时间问题

因为是离线运行&#xff0c;首要问题是时间不准确&#xff0c;就在主板上加装了纽扣电池&#xff0c;但是会有一系列问题&#xff0c;比如无法将RTC时间回写到系统时间&#xff0c;或者无法将系统时间写到RTC中等等一些列问题。为解决这些问题&#xff0c;一劳永逸的方式&#…...

数据库动态扩容:Java实现与技术策略

引言 数据库动态扩容是应对数据量增长和业务需求变化的关键技术。它允许数据库系统在不停机的情况下&#xff0c;通过增加或减少资源来适应业务负载的变化。本文将详细介绍数据库动态扩容的工作原理、技术策略&#xff0c;并提供Java代码示例。 1. 数据库动态扩容的工作原理 …...

Golang | Leetcode Golang题解之第525题连续数组

题目&#xff1a; 题解&#xff1a; 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)} …...

低代码架构浅析

低代码的定义与应用场景 定义 低代码平台是一种通过可视化工具和预定义组件实现快速应用开发的环境&#xff0c;显著减少了编码量。它旨在简化开发流程&#xff0c;加快应用交付&#xff0c;提高开发效率&#xff0c;使非技术人员也能参与应用开发。 应用场景 企业内部应用 …...

mysql字段是datetime如何按照小时来统计

在 MySQL 中&#xff0c;如果你有一个包含 DATETIME 类型的列&#xff0c;并且你想按照小时来统计数据&#xff0c;可以使用 DATE_FORMAT 函数将 DATETIME 列格式化为仅包含日期和小时的形式&#xff0c;然后使用 GROUP BY 子句来分组。 假设你有一个名为 events 的表&#xf…...

nacos快速启动

预备环境准备&#xff1a; 确保是64 bit OS&#xff08;推荐Linux/Unix/Mac&#xff09;&#xff0c;安装64 bit JDK 1.8并下载&配置&#xff0c;安装Maven 3.2.x并下载&配置。 下载源码或者安装包&#xff1a; 从Github上下载源码方式&#xff1a; git clone https://…...

@Excel若依导出异常/解决BusinessBaseEntity里面的字段不支持导出

今天发现所有实体类继承BusinessBaseEntity里面的这些通用字段不支持导出&#xff0c;debug时发现是这样&#xff1a; 导出效果 这里我把能查到的方法都汇总了&#xff0c;如果你也遇到这个异常&#xff0c;可以去逐步排查 1.先看库里有没有数据 2.看字段名是否对齐 3.所需要…...

虚拟机 Email 恢复专用工具:Virtual Machine Email Recovery

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 SysTools 系列数据恢复、取证及…...

代理人工智能如何应对现代威胁的速度和数量

Seven AI首席执行官 Lior Div 讨论了代理 AI 的概念及其在网络安全中的应用。他解释了代理 AI 与传统自动化安全系统的区别&#xff0c;即代理 AI 具有更大的自主性和决策能力。 Div 强调&#xff0c;通过实时处理大量警报&#xff0c;代理 AI 特别适合对抗现代 AI 驱动的威胁…...

element-plus版本过老,自写选项弹框增删功能

title: element-plus版本过老&#xff0c;自写选项弹框增删功能 date: 2024-10-31 10:53:18 tags: element-plus 1.情景 发现代码怎么都用不了el-select的#footer插槽从而实现不了相关的操作&#xff0c;发现el-select自带的管理相关数据的属性popper-class用不了。 2.原因与…...

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…...

计算机后台服务-更新下载,重启————未来之窗行业应用跨平台架构

一在教育中应用 1. 提高效率&#xff1a;能够快速收集大量学生的卷子&#xff0c;节省了传统人工收集和整理的时间。 2. 准确性&#xff1a;减少了人工收卷过程中可能出现的错漏和混乱&#xff0c;确保每份卷子都能准确无误地被收集和记录。 3. 即时性&#xff1a;可以实时接收…...

springcloud通过MDC实现分布式链路追踪

在DDD领域驱动设计中&#xff0c;我们使用SpringCloud来去实现&#xff0c;但排查错误的时候&#xff0c;通常会想到Skywalking&#xff0c;但是引入一个新的服务&#xff0c;增加了系统消耗和管理学习成本&#xff0c;对于大型项目比较适合&#xff0c;但是小的项目显得太过臃…...

logback日志级别动态切换四种方案

生产环境中经常有需要动态修改日志级别。 现在就介绍几种方案 方案一&#xff1a;开启logback的自动扫描更新 配置如下 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug…...

AI视频管理平台中使用目标检测模型中的NMS参数原理及设置原则

目标检测模型中的NMS参数原理及设置原则 在目标检测模型中&#xff0c;非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;简称NMS&#xff09;是一种常用的后处理技术&#xff0c;用于筛选和保留最佳的检测框。本文将详细介绍NMS的原理、参数设置原则以及实际应用…...

从傅里叶到拉普拉斯:给信号处理新手的直观对比指南(附性质对照表)

从傅里叶到拉普拉斯&#xff1a;给信号处理新手的直观对比指南 信号处理领域的数学工具往往让初学者望而生畏。当你刚掌握傅里叶变换的基本概念&#xff0c;迎面而来的拉普拉斯变换又带来新的困惑。这两种变换究竟有何关联&#xff1f;为何工程师需要掌握两种看似相似的分析工具…...

软硬一体赋能企业守护力,可穿戴手环构建员工数字健康管理新范式

在数字化转型深入推进的当下&#xff0c;员工健康已成为企业安全生产、高效运营的核心基石。传统健康管理模式存在数据零散、监测滞后、人工成本高、风险预警不及时等痛点&#xff0c;尤其铁路、港口、政企单位、生产型企业&#xff0c;一线员工高强度作业、慢病高发、突发健康…...

别再只用箱线图了!用R语言ggplot2绘制高颜值小提琴图,让你的SCI图表更专业

科研数据可视化进阶&#xff1a;用R语言打造专业级小提琴图 在生物医学领域的科研论文中&#xff0c;数据可视化是展示研究成果的关键环节。许多研究者习惯性地使用箱线图来呈现数据分布&#xff0c;却忽略了这种传统方法可能掩盖的重要信息细节。当面对复杂的数据分布模式时&…...

别再被0.1+0.2≠0.3搞懵了!用Python和Java代码手把手拆解IEEE-754浮点数存储

浮点数精度之谜&#xff1a;用代码揭开0.10.2≠0.3的真相 当你在Python控制台输入0.1 0.2时&#xff0c;得到的不是预期的0.3&#xff0c;而是0.30000000000000004。这个看似简单的数学运算为何会出现如此"诡异"的结果&#xff1f;本文将带你用Python和Java代码深入…...

光谱分析避坑指南:为什么你的多项式拟合基线校正总是不准?

光谱分析避坑指南&#xff1a;为什么你的多项式拟合基线校正总是不准&#xff1f; 拉曼光谱和红外光谱分析中&#xff0c;基线漂移是困扰研究人员的常见问题。就像摄影师需要先调平三脚架才能拍出清晰照片一样&#xff0c;准确的光谱基线校正是后续定量分析的基石。然而在实际操…...

不只是F5隐写:一次CTF解题,带你深入理解ZIP伪加密的底层原理与手动修复

深入解析ZIP伪加密&#xff1a;从CTF实战到二进制手动修复 在CTF竞赛中&#xff0c;ZIP伪加密一直是Misc类题目的经典考点。不同于常规的加密破解&#xff0c;伪加密巧妙地利用了ZIP文件格式的设计特性&#xff0c;在不实际加密数据的情况下制造出需要密码的假象。本文将带您深…...

USER.md 渐进式沉淀实战:Hermes Agent 用户画像构建的 4 阶段演进路径

1. USER.md 不是静态配置,而是用户认知的渐进式快照 大多数人第一次打开 USER.md 文件时,会下意识把它当成一个“填空题”:姓名、职位、技术栈、常用工具……填完就提交,以为完成了人格初始化。我试过三次——第一次在内部 PoC 项目里,第二次在客户交付现场,第三次是在给…...

我自己写的论文为什么被判 AI 率 60%?这款工具帮我降到 5% 通过 985 知网严查

我自己写的论文为什么被判 AI 率 60%&#xff1f;这款工具帮我降到 5% 通过 985 知网严查 我是 211 直博生、毕业论文 100% 自己手写、没用过任何 AI 工具。送学校知网 AIGC 检测——AI 率 60%&#xff0c;学校卡 15% 红线。我整个人懵了——明明没用 AI 写、为什么算法判我 AI…...

32dB增益+79%效率:HT20340S在工业射频能源中的高能效设计

HT20340S&#xff1a;400W LDMOS宽带射频功率放大器在大功率射频能量应用、工业加热、等离子体激励以及宽带通信等领域&#xff0c;功率放大器&#xff08;PA&#xff09;的性能直接决定了系统的发射效率与作用距离。当需要在10MHz至300MHz的宽带范围内实现数百瓦的连续波输出时…...

从天气预报App到数值模型:拆解‘气旋路径预报’背后的关键技术栈

从天气预报App到数值模型&#xff1a;拆解‘气旋路径预报’背后的关键技术栈 清晨打开手机查看台风路径&#xff0c;指尖划过屏幕上那些彩色线条时&#xff0c;你是否想过这些动态轨迹背后隐藏着怎样的技术交响曲&#xff1f;现代气象预报早已不是简单的经验推测&#xff0c;而…...