QML:将项目注入项目层次结构

QML: Injecting Item into hierarchy of Items

我有一个可重复使用的物品,看起来像这样:

Reusable.qml:

Flickable {
    CustomCppComponent {
        id: customComponent
    }
}

现在我想用一些额外的实例化它 child:

Main.qml:

Item {
    Reusable {
        Rectangle {
            id: rect
            anchors.fill: parent
        }
    }
}

但我希望将 Rectangle 作为 CustomComponent 的 child 放置,因此等同于:

Main.qml:

Item {
    Flickable {
        CustomCppComponent {
            id: customComponent
            Rectangle {
                id: rect
                anchors.fill: parent
            }
        }
    }
}

我该怎么做?

最简单的方法是使用 default property

Reusable.qml:

Flickable {
    default property alias innerContents: customComponent.data
    CustomCppComponent {
        id: customComponent
    }
}

由于 innerContents 是默认值 属性,您添加到 Reusable 实例的任何子对象都将添加到 innerContents,它指向 customComponent 的 data 属性.

这当然假设 CustomCppComponent 是一个视觉项目,您的问题没有定义它。