В зависимости от того, что вы хотите сделать, вы можете либо
A.Доступ к элементу из его индекса
Вы можете получить доступ к элементам по их индексу, используя метод ретранслятора itemAt
, как указано @eyllanesc.Будьте осторожны, поскольку делегаты еще не могут быть созданы.
Repeater {
id: repeater
model: 5
Component.onCompleted: {
if (repeater.count > 0) {
var firstRect = repeater.itemAt(0)
// do something
}
}
Rectangle { /*...*/ }
}
B.Используйте itemAdded
сигнал
Вы можете подключиться к itemAdded
сигналу Repeater
.Этот сигнал срабатывает всякий раз, когда элемент добавляется (конечно), и будет предоставлять элемент index
и item
.
Repeater {
id: repeater
model: 5
property Item firstRect
onItemAdded: {
// `index` and `item` come from the signal
if (index == 0) {
firstRect = item
// Or do something with item
}
}
Rectangle { /*...*/ }
}
C.Делегат назначает себя свойству
. Прямоугольники можно назначить свойству, объявленному одним из их родителей.Это обычно не является предпочтительным, поскольку ваш делегат теперь зависит от того именованного свойства, которое должно быть там, но это может быть полезно.
Repeater {
id: repeater
model: 5
// That property can be anywhere
property Item firstRect
Rectangle {
id: rect
width: 50; height: 50;
Component.onCompleted: {
// Index is automatically populated by the Repeater
if (index == 0)
repeater.firstRect = rect
}
}
}
В большинстве случаев вы хотите избежать какой-либо зависимости от делегатов от родителей,поэтому решения A и B являются предпочтительными.Но это всегда зависит!