我已经定义了MyElement
元素(在MyElement.qml文件中)如下:
Rectangle {
Item {
}
Component.onCompleted: {
console.warn(children.length)
}
}
我们将在Item
中定义的MyElement
元素称为内部子级。现在,我通过以下方式使用MyElement
元素:
MyElement {
Item {
}
}
这里还有一个Item
元素用作MyElement
的子元素。我们将此Item
元素称为external子级。要理解下面我的问题,应该清楚地了解内部和外部孩子之间的区别。
所显示代码的输出将为2,即,两个Item
元素都被计算为子代。
[将来,我只想对外部子对象而不是内部子对象进行迭代(C0)(外部子对象追随内部子对象)。但是为此,我必须知道我必须从其开始的子级索引(在给定的示例中,该索引为1)。有没有办法获取该索引,或者换句话说,获取内部子代的数量?谢谢。
Component.onCompleted
和
//MyElement.qml Rectangle { id: root readonly property Item last_item: lastone Item { id: someitem } Item { id: lastone } Component.onCompleted: { var external_started = false; for(var i = 0 ; i < root.children.length ; ++i) { if(external_started) console.log(root.children[i].toString(), 'is external'); else if(root.children[i]===last_item) external_started = true; } } }
这是dirty骇客,但可以。我将对最后一项的引用保存在名为
MyElement { Item { objectName: 'I am external' } }
的只读属性中,这将区分我在qml定义中的最后一项。在qml文件之外添加的其他项将放置在子级列表中此项之后。