如何知道qml项目是视觉还是资源?

时间:2016-04-22 08:59:18

标签: qt qml qt5 qtquick2 qt-quick

假设我有一个 qml ,其中Item为root,2个是visual(Text,Rectangle)和一个非可视项(Timer)。我知道我可以使用“数据”来获取视觉和非视觉项目列表,但如何在迭代时识别视觉和非视觉项目,?

注意:我可以在创建每个项目时指定命名约定,但有没有可用于识别可视和非可视项目的属性/ API?

Item {
    children: [
        Text {},
        Rectangle {}
    ]
    resources: [
        Timer {}
    ]
}

1 个答案:

答案 0 :(得分:2)

所有可视项都来自Item,因此它们都具有相应的属性。你可以做一些基本的事情:

var obj = data[i]
if (obj.visible !== undefined) // obj has visible property so it is a visual item

当然,如果由于某种原因你有一个自定义类型不是一个可视项目但由于某种原因有一个visible属性,这将不起作用,所以选择相应的属性。