2016-04-22 36 views
0

假設我有一個qml作爲根目錄和2視覺(文字,矩形)和一個非可視項目(計時器)。我知道我可以使用「數據」來獲得視覺和非視覺物品的列表,但如何識別視覺和非視覺物品,同時迭代,?如何知道qml項是視覺還是資源?

注意:我可以在創建每個項目時指定命名約定,但是是否有任何屬性/ API可用於標識視覺和非視覺項目?

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

你爲什麼想這樣做? 使用數據來分配元素,然後您可以使用子元素或具有資源的非可視元素迭代可視元素。 – GrecKo

回答

2

所有視覺項目都來自Item,所以它們都將具有相應的屬性。你可以做一些基本的:

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

當然,如果由於某種原因,你有一個自定義類型,是不是視覺的物品,但由於某種原因,有一個visible屬性,這是不行的,所以挑財產相應。

+2

也許'instanceof'可以用來比盲目檢查屬性更強大嗎? – peppe

相關問題