Как вызвать ImageView по objectName в 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, чтобы переместить его? Я не хочу использовать C++.

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!
}

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

Другие вопросы по тегам