2016-04-22 7 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