Как вызвать ImageView по имени объекта в QML

Я динамически создаю изображения в своем QML. Это код, который я использую:

for (var n = 0; n < 3 * numberOfTiles; n ++) {
            var image = imageDefinition.createObject();
            image.translationX = getX(n);
            image.translationY = getY(n);
            image.objectName = ("image"+n) 
            drawContainer.add(image);
        }

Создание изображений работает хорошо, за исключением того, что я не знаю, как назвать эти изображения задним числом. Я не могу установить им идентификатор, и я не знаю, работает ли такая установка objectName.

Я не получаю никаких ошибок, и если это работает, как я могу вызвать «image3» из QML, чтобы переместить его? Я не хочу использовать С++.


person Bojan Kogoj    schedule 25.01.2014    source источник


Ответы (1)


Решение нашел самостоятельно. Сначала я добавляю это, чтобы иметь глобальный доступ

property list<ImageView> images

А затем я создаю изображения в массиве и копирую их

onCreationCompleted: {
   //you need a tmp variable, since you can't do that with property variant
   var imagesTmp = Array();
    for (var n = 0; n < 3 * numberOfTiles; n ++) {
        imagesTmp[n] = imageDefinition.createObject()
        imagesTmp[n].translationX = getX(n);
        imagesTmp[n].translationY = getY(n);
        drawContainer.add(imagesTmp[n]);
    }
    images = imagesTmp;
    images[3].translationX = 10; //as example, this works!
}

Как оказалось, изображения хранят ссылку на изображение.

person Bojan Kogoj    schedule 25.01.2014