拿这个代码:
import QtQuick 1.1
Rectangle {
width: 100
height: 100
property color fromColor: "red"
property color toColor: "blue"
gradient: Gradient {
property color fromColor: "yellow"
property color toColor: "green"
GradientStop { position: 0; color: fromColor }
GradientStop { position: 1; color: toColor }
}
}
为什么从封闭元素中Gradient
选择它的fromColor
和toColor
属性?
这在哪里记录(至少在源代码注释中,在官方文档中更好)?
注意:这个“QML 混淆示例来自 Girish Ramakrishnan 的演讲Qt Quick Best Practices and Design Patterns(倒退到第 25 分钟),他确实说这件事非常复杂,必须与组件范围有关,但没有时间解释原因。
[更新]
因此,正如 MartinJ 在下面所说,元素属性(不仅是元素子)层次结构中的顶级组件的属性对所有属性可见,无论嵌套多么深,优先级是该属性的属性,以及根本没有看到“中间”项目。
这是一个小例子:
import QtQuick 1.1
Item {
Item {
property string s: "parent-str"
Item { Component.onCompleted: console.log(s) }
}
}
这给出了:"ReferenceError: Can't find variable: s"
这按预期工作:
import QtQuick 1.1
Item {
property string s: "parent-str"
Item { Component.onCompleted: console.log(s) }
}
,输出"parent-str"
。
请参阅下面的 MartinJ 的评论。