QML state详解

news/2024/9/21 8:49:46/

1.state简介

changes(list<Change>):保存当前State下的多个Change对象,比如PropertyChanges、StateChangeScript、ParentChange等。
extend(string):表示该状态要在哪个State的基础上进行扩展,当一个状态要在另一个状态基础上进行扩展时,它将继承该另一个状态的所有changes。
name (string ):此属性保存状态的名称,每个状态在其项目内应具有唯一的名称。
when(bool ):该属性在应用状态成立时生效。应该将其设置为一个表达式,您希望何时应用状态时使该表达式的计算结果为true。

当一个对象的状态发生改变,那么该对象展示给用户的效果也会相应发生改变,所以state支持了多个不同change对象供我们使用,有如下几种:

  • PropertyChanges: 改变对象的属性值
  • StateChangeScript:运行脚本,比如function函数
  • ParentChange: 改变对象的父类对象.并且改变对象在父类对象下的坐标xy,宽高等属性
  • AnchorChanges: 改变对象的anchor值

2.示例

示例1:定义了两种状态,Rectangle中,鼠标按下时显示pressed状态,松开鼠标时显示released状态。

Window {visible: truewidth: 400height: 400title: qsTr("Hello World")Rectangle  {id: rectwidth:  100height:  100state: "pressed";MouseArea  {id:  mouseAreaanchors.fill:  parentonPressed: {rect.state = "pressed";}onReleased: {rect.state = "released";}}states:  [State  {name:  "pressed"PropertyChanges  {target:  rect;color:  "red"}},State  {name:  "released"PropertyChanges  {target:  rect;color:  "yellow"}}]}
}

示例2:鼠标按下的时候,rect隐藏。

Window {visible: truewidth: 400height: 400title: qsTr("Hello World")Rectangle {id:  rectwidth:  100height:  100color:  "red"MouseArea {id:  mouseAreaanchors.fill:  parent}states:State {name:  "hidden"when:  mouseArea.pressedPropertyChanges {target:  rectopacity:  0}}}
}


http://www.ppmy.cn/news/28303.html

相关文章

数据分析:某电商优惠卷数据分析

数据分析&#xff1a;某电商优惠卷数据分析 作者&#xff1a;AOAIYI 专栏&#xff1a;python数据分析 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;AOAIYI首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可…

电脑技巧:分享8个Win11系统必备小技巧

目录 1、让任务栏显示“右键菜单” 2、任务栏置顶 3、还原经典右键菜单 4、Win11版任务管理器 5、新版AltTab 6、开始菜单不再卡 7、为Edge浏览器添加云母效果 8、自动切换日/夜模式 Win11在很多地方都做了调整&#xff0c;但由于涉及到诸多旧有习惯&#xff0c;再加上…

python之并发编程

一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…

Qt音视频开发17-vlc内核回调拿图片进行绘制

一、前言 在众多播放器中&#xff0c;支持的种类格式众多&#xff0c;并支持DVD影音光盘&#xff0c;VCD影音光盘及各类流式协议&#xff0c;提供了sdk进行开发&#xff0c;这点是至关重要的&#xff0c;尽管很多优秀的播放器很牛逼&#xff0c;由于没有提供sdk第三方开发&…

Connext DDS录制服务 Recording Service(2)

2.4 远程管理 控制客户端(如RTI管理控制台)可以使用此接口远程控制录制服务。 注:记录服务远程管理基于第10.3节中描述的RTI远程管理平台。有关录制服务中远程管理工作的详细讨论,请参阅该手册 下面是所有支持操作的API引用。 2.4.1 启用远程管理 默认情况下,在录制服务中…

【C++】仿函数、lambda表达式、包装器

1.仿函数 仿函数是什么&#xff1f;仿函数就是类中的成员函数&#xff0c;这个成员函数可以让对象模仿函数调用的行为。 函数调用的行为&#xff1a;函数名(函数参数)C中可以让类实现&#xff1a;函数名(函数参数)调用函数 自己写一个仿函数&#xff1a; 重载()运算符 cla…

Qt中信号与槽的使用

Qt中信号与槽的使用 Qt当中一个重要的东西是信号和槽&#xff0c;它被用于对象之间的通信。 在Qt中&#xff0c;例如“点击按钮”这个事件就是发送信号的对象&#xff0c;接收信号的是某一个窗口&#xff0c;响应信号的是一个处理&#xff0c;可以是隐藏窗口或者是关闭窗口。…

Linux安装云原生网关Kong/KongA

目录1 概述2 创建服务器3 安装postgres4 安装kong5 安装node6 安装KONGA1 概述 Kong Kong是一款基于OpenResty&#xff08;NginxLua模块&#xff09;编写的高可用、易扩展的开源API网关&#xff0c;专为云原生和云混合架构而建&#xff0c;并针对微服务和分布式架构进行了特别…