我有一个QML对象定义如下:
Item {
property alias source: a.internalImage.source
property alias text: a.internalText.text
Column {
id: a
Image {
id: internalImage
}
Text {
id: internalText
width: internalImage.width
}
}
}
这失败了:Invalid alias target location: internalImage
。
但是,如果我这样做:
Column {
property alias source: internalImage.source
property alias text: internalText.text
Image {
id: internalImage
}
Text {
id: internalText
width: internalImage.width
}
}
为什么?
答案 0 :(得分:4)
从documentation开始,Component
的范围是:
组件中对象id的组合和组件的根元素的属性
因此,外部元素不允许通过id
s链访问内部元素中包含的id
。
另一方面,如果通过一组变量显式导出一组参数,那么这些值/引用可以自由地用于外部组件。
答案 1 :(得分:0)
我确实通过创建一个简单的属性和一个changeListener解决了这个问题
Item {
property string source: a.internalImage.source
property string text: a.internalText.text
onSourceChanged: a.internalImage.source = source
onTextChanged: a.internalText.text
}
我希望这对您有帮助