Как вызвать 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!
}
Как оказалось, изображения сохраняют ссылку на изображение.