暴露子属性的QML错误

Luc*_*uca 5 c++ qt qml

我有一个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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

失败,原因: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
    }
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?

sky*_*ack 4

文档来看, a 的范围Component是:

组件内的对象 id 和组件的根元素属性的并集

因此,外部元素不允许id通过 s 链访问内部元素中包含的 s id
另一方面,如果您通过一组变量显式导出一堆参数,则这些值/引用可免费供外部组件使用。