PropertyChanges QML 类型
描述了新状态的新属性绑定或值。 更多...
导入语句 | import QtQuick |
属性
- explicit : bool
- restoreEntryValues : bool
- target : QtObject
详细描述
PropertyChanges 用于在 状态 中定义属性值或绑定。这样可以在项目在不同状态之间变化时改变其属性值。
要创建一个 PropertyChanges 对象,将绑定到目标项的属性,就像您绑定到本地属性一样。这样,您可以定义新的属性值或绑定。例如
import QtQuick 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 { rect { color: "blue" height: container.height } } } } }
当鼠标被按下时,Rectangle 会变为 resized 状态。在此状态下,PropertyChanges 对象将矩形的颜色设置为蓝色,并将 height
值设置为 container.height
。
注意,这将在 resized 状态下自动将 rect.height
绑定到 container.height
。如果应该不建立属性绑定,并且高度应该是状态变化时 container.height
的值,请将 explicit 属性设置为 true
。
PropertyChanges 对象还可以重写对象的默认信号处理器以实现特定于新状态的信号处理器
PropertyChanges { myMouseArea.onClicked: doSomethingDifferent() }
注意: PropertyChanges 可以用来改变锚点边距,但不能改变其他锚点值;请改用 AnchorChanges。类似地,要改变 Item 的 parent 值,请使用 ParentChange。
重置属性值
可以使用 undefined
值来重置状态中属性值。在下面的示例中,当 myText
变为 widerText 状态时,其 width
属性被重置,使文本具有自然宽度,并在单行上显示整个字符串。
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 { myText.width: undefined } } } MouseArea { anchors.fill: parent onClicked: myText.state = "widerText" } }
过渡中的即时属性更改
当使用过渡来处理状态变化动画时,它们会将从当前状态中的属性值动画化到新状态中定义的值(由属性更改对象定义)。然而,有时在过渡期间立即设置属性值而不进行动画处理;在这些情况下,可以使用属性动作类型强制立即更改属性。
有关更多详细信息,请参阅属性动作文档。
注意:与PropertyChanges中的其他属性不同,visible和enabled属性的行为并不完全相同。因为这些属性可以通过他们的父状态的隐式更改而改变,所以在所有PropertyChanges中应该明确设置。如果一个部件的父部件不可用或不可见,该部件仍然将处于不可访问/不可见状态。
注意:为了与Qt 5保持向后兼容性,您还可以使用target属性和不含ID的普通属性名称指定属性更改。例如:PropertyChanges { target: myItem; x: 15 }
。建议使用带有ID的格式。如果您需要使用带有target的格式,如果文件将与Qt设计工作室编辑。请注意,Qt设计工作室对其可以处理的文件也施加了多项进一步的限制。
另请查看:状态示例,Qt Quick States和Qt Qml。
属性文档
explicit : bool |
如果将explicit设置为true,任何潜在的绑定都将被解释为在状态进入时发生的一次性分配。
在以下示例中,通过添加explicit防止myItem.width
绑定到parent.width
。相反,它在状态更改时将其分配给parent.width
的值。
PropertyChanges { target: myItem explicit: true width: parent.width }
默认情况下,explicit为false。
restoreEntryValues : bool |
此属性表明当离开状态时是否应恢复先前的值。
默认值为true
。将该值设置为false
将创建一个具有永久效果的临时状态。
© 2024 The Qt Company Ltd. 本文档中包含的贡献版权属于各自的拥有者。本提供的文档是根据由自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt和相关的标志是The Qt Company Ltd.在芬兰和其他国家/地区的商标。所有其他商标均为各自所有者的财产。