要获取父组件的属性值并将它们分配给子属性,我们可以直接使用父属性
//Component1.qml:
Item
{
Component2
{
contentWidth:200
}
}
//Component2.qml:
Item
{
property int contentWidth:0
Rectangle
{
width:parent.contentWidth
}
}
Run Code Online (Sandbox Code Playgroud)
或创建别名
//Component1.qml:
Item
{
Component2
{
contentWidth:200
}
}
//Component2.qml:
Item
{
property alias contentWidth:rect.width
Rectangle
{
id:rect
}
}
Run Code Online (Sandbox Code Playgroud)
什么时候最合适?
我的想法是,当父属性仅用于一个特定的子组件属性时,应使用别名(contentWidth仅用于rect.width)
der*_*erM 11
您的两个示例之间存在非常显着的差异。
Aproperty alias something: id.property自动创建双向绑定,而在示例 1 中,您只有单向绑定。
含义:如果您更改contentWidth两个Rectangles的宽度值会发生变化 - 如果现在(假设)即使在组件中的某些内部Rectangle也会更改宽度,则此更改将仅反映在示例 2 中,而在示例 1 中,绑定将被打破。
我不知道实现细节,但优化它可能更容易,如果你特别告诉,它不仅绑定到它,而且实际上是相同的值。
一个简单的经验法则是:property alias ...:...如果它在逻辑上是别名,则使用它,因此属性本质上是相同的。如果您想将属性从子项导出到外部,甚至是整个子项,通常就是这种情况。
使用属性绑定,如果你想绑定它们的值,因为它们的值巧合地相同,或者特别是如果不是,但一个只依赖另一个(但不一定是相反的,因为默认情况下你只有一个单向绑定)
Areadonly property Item child1: idOfChildOne可能与 具有相同的效果property alias child1: idOfChildOne,但从语义上讲,第一个就像一个保存指针的存储(由于 readonly 标志,它只被禁止更改),但第二个是对这个孩子的直接访问。所以通常你想使用第二个(如 QtDesigner 所做的那样)。
| 归档时间: |
|
| 查看次数: |
11063 次 |
| 最近记录: |