Reputation: 2449
I have the following Repeater
:
Repeater{
id: rainDropId
model: 200
delegate: Rectangle {
x: Math.floor(Math.random() * windowId.width)
y: Math.floor(Math.random() * windowId.height)
property int mLayer: Math.floor(Math.random() * 4) + 1
property double mYSpeed: -2.0 * mLayer
width:5
height:5
color: "#3399FF"
radius: width*0.5
}
}
And I have a Timer
.
I want to modify the positions of all elements from the Repeater
according to their own properties. How can I access something like rainDropId[index]
from the Timer
?
Thanks
Upvotes: 2
Views: 2022
Reputation: 24416
Use Repeater
's itemAt()
method:
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
id: windowId
visible: true
width: 400
height: 400
Repeater {
id: rainDropId
model: 200
delegate: Rectangle {
width:5
height:5
color: "#3399FF"
radius: width*0.5
}
}
Timer {
running: true
interval: 1000
repeat: true
triggeredOnStart: true
onTriggered: {
for (var i = 0; i < rainDropId.count; ++i) {
rainDropId.itemAt(i).x = Math.floor(Math.random() * windowId.width);
rainDropId.itemAt(i).y = Math.floor(Math.random() * windowId.height);
}
}
}
}
You might also consider using Qt Quick Particles to create rain drops.
Upvotes: 5