0%

PropertyChanges属性说明

相关控件:AnchorChanges ParentChange

PropertyChanges用于在定义的属性值或绑定状态。这使项目的属性值在状态之间更改时可以更改。

本文: https://www.lovejia.win/blog/article/PropertyChanges.html
参考原文:http://doc.qt.io/qt-5/qml-qtquick-propertychanges.html

属性说明

explicit : bool

如果explicit设置为true,则任何潜在的绑定将被解释为在输入状态时发生的一次性分配。

restoreEntryValues : bool

此属性保留在离开状态时是否应恢复先前的值。
默认值为true。设置此值以false创建对属性值具有永久影响的临时状态。

target : Object

此属性保存包含要更改的属性的对象。

功能简述

PropertyChanges用于在定义的属性值或绑定状态。这使项目的属性值在状态之间更改时可以更改。要创建PropertyChanges对象,请指定要修改其属性的目标项目,然后定义新的属性值或绑定。
PropertyChanges可用于更改锚边距,但不能更改其他锚值。该undefined值可用于重置状态的属性值。
当转换用于动态化状态更改时,它们将属性从当前状态的值映射到在新状态(由PropertyChanges对象定义)中定义的值。但是,有时希望设置一个属性值立即一期间的过渡,而不动画;在这些情况下,PropertyAction类型可以用于强制立即更改属性。

注意:PropertyChanges可用于更改锚边距,但不能更改其他锚值; 使用AnchorChanges为此。类似地,要更改项目的父值,请改用ParentChange。
该可见和启用的属性项目不表现完全一样在其它性能PropertyChanges。由于这些属性可以通过其父状态隐式更改,因此它们应在所有PropertyChanges中显式设置。如果其中一个父项未启用或不可见,该项目仍然不会启用/可见。

以下示例显示当按下鼠标时,矩形将变为已调整大小的状态。在此状态下,PropertyChanges对象将矩形的颜色设置为蓝色,并将height值设置为container.height:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import QtQuick 2.0
Item {
id: container
width: 300; height: 300

Rectangle {
id: rect
width: 100; height: 100
color: "red"

MouseArea {
id: mouseArea
anchors.fill: parent
}

states: State {
name: "resized"; when: mouseArea.pressed
PropertyChanges { target: rect; color: "blue"; height: container.height }
}
}
}

注意:这自动绑定rect.height到container.height在调整大小状态。如果不应建立属性绑定,并且高度应该只设置为container.height状态更改时的值,请将explicit属性设置为true。

一个PropertyChanges对象还可以覆盖默认的信号处理程序为对象实施具体到新的状态的信号处理程序:

1
2
3
4
PropertyChanges {
target: myMouseArea
onClicked: doSomethingDifferent()
}

在下面的示例中,当myText更改为更宽的文本状态时,其width属性被重置,使文本的自然宽度,并在一行显示整个字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Rectangle {
width: 300; height: 200

Text {
id: myText
width: 50
wrapMode: Text.WordWrap
text: "a text string that is longer than 50 pixels"

states: State {
name: "widerText"
PropertyChanges { target: myText; width: undefined }
}
}

MouseArea {
anchors.fill: parent
onClicked: myText.state = "widerText"
}
}

在以下示例中,显式的添加防止myItem.width绑定到parent.width。相反,它被分配parent.width状态改变时的值:

1
2
3
4
5
PropertyChanges {
target: myItem
explicit: true
width: parent.width
}
------本文结束    感谢阅读------
你打赏你的,我分享我的!