yonutix
yonutix

Reputation: 2449

Repeater access elements

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

Answers (1)

Mitch
Mitch

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

Related Questions