网站用词精准性seo方法培训
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}}}
} 
