2016-04-22 19 views
0

Angenommen, ich habe eine qml mit Item als root und 2 visuelle (Text, Rechteck) und einem nicht-visuellen Element (Timer). Ich weiß, dass ich "Daten" verwenden kann, um die Liste der visuellen und nicht visuellen Elemente zu erhalten, aber wie visuelle und nicht visuelle Elemente während der Iteration identifizieren?Wie zu wissen, qml Element ist visuell oder Ressource?

Hinweis: Ich kann eine Namenskonvention beim Erstellen jedes Elements angeben, aber gibt es eine Eigenschaft/API zur Identifizierung von visuellen und nicht-visuellen Elementen?

+1

Warum möchten Sie das tun? Verwenden Sie Daten, um Elemente zuzuweisen, und dann können Sie über die visuellen mit Kindern oder die nicht visuellen mit Ressourcen iterieren. – GrecKo

Antwort

2

Alle visuellen Elemente sind von Item abgeleitet, so dass sie alle die entsprechenden Eigenschaften haben werden. Sie können etwas wie tun grundlegenden Fragen wie:

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

Natürlich, wenn Sie aus irgendeinem Grund einen benutzerdefinierten Typ haben, die nicht ein visuelles Element ist aber aus irgendeinem Grund hat eine visible Eigenschaft, das wird nicht funktionieren, so holen die Eigentum entsprechend.

+2

Vielleicht kann 'instanceof' verwendet werden, um robuster zu sein als blendend nach Eigenschaften zu suchen? – peppe