QtQuick 基础教程 第三课: QML State状态与Transition变换

State QML 类型

所有项目都有一个默认状态,用于定义对象和属性值的默认配置。可以通过将State项添加到states属性定义新状态,以允许项在不同配置之间切换。

特性:

/* 
此属性包含要应用于此状态的更改,
默认情况下,这些更改是针对默认状态应用的。
如果该状态扩展了另一个状态,则对正在扩展的状态应用更改。
*/
changes: list<Change>
/*
此属性保存此状态扩展的状态。
当一个状态扩展另外一个状态时,它会继承该状态的所有更改。
对于扩展状态指定的更改,正在扩展的状态被视为基本状态。
*/
extend: string
/*
此属性保存状态的名称。
每个状态在其项目中都应该有一个唯一的名称。
*/ 
name: string
/*
当状态应该被应用时,这个属性成立。
如果组中的多个状态具有when同时评估为的true则将应用第一个匹配的状态。
*/
when: bool

案例

import QtQuick 2.12

Rectangle {
  id: root 
  width: 100
  height: 100
  color: "gray"
  
  MouseArea {
    id: mousearea 
    anchors.fill: parent 
    onClicked: {
      root.state == 'clicked' ? root.state = "" : root.state = 'clicked';
    }
    
  }
  
  states: [
    State {
      name: "clicked"
      PropertyChanges { target: root; color: "red" }
    }
  ]
}

注意: 默认状态是使用空字符串("")引用的。

状态通常与Transitions一起使用,以在发生状态更改时提供动画。

注意: 不允许从同一对象的另一个状态中设置对象的状态。

Transition 过渡

Transition 定义了当State发生变化时要应用的动画。

特性:

// 此属性包含要转换运行的动画列表
animations: list<Animation>
// 此属性保存从from状态到to状态时是否运行Transition,默认为启用转换
enabled: bool

from: string
// 此属性保存在反转触发此转换的条件时是否应自动反转转换。默认值为假。
reversible: bool
// 此属性保存转换当前是否正在运行。
running: bool
to: string

案例:

import QtQuick 2.12

Rectangle {
  id: root 
  width: 100
  height: 100
  color: "gray"
  
  MouseArea {
    id: mousearea 
    anchors.fill: parent 
    onClicked: {
      root.state == 'clicked' ? root.state = "" : root.state = 'clicked';
    }
    
  }
  
  states: [
    State {
      name: "clicked"
      PropertyChanges { target: root; color: "red" }
    }
  ]
  
  transitions: Transition {
    ColorAnimation { 
        duration: 500;
        easing.type: Easing.OutInQuad;    
     }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值