В общем, задача такая: надо расположить в окне программы (интерфейс реализован через QML), в определенных координатах, элементы. Координаты элементов и их количество в начальный момент не известны.
Вся информация об элементах доступна через ListModel.
В общем, я решил проблему, примерно так:
//main.qml
import QtQuick 2.3
Item {
id: item
width: 500
height: 500
function addItems() {
for (var i = 0; i < mainModel.count; i++) {
var component = Qt.createComponent("RectItem.qml");
if (component.status === Component.Ready) {
var childRec = component.createObject(item);
childRec.x = mainModel.get(i).x;
childRec.y = mainModel.get(i).y;
childRec.color = mainModel.get(i).color;
}
}
}
ListModel {
id: mainModel
ListElement {
x: 100
y: 110
color: "#123"
}
ListElement {
x: 450
y: 90
color: "#a63"
}
ListElement {
x: 90
y: 400
color: "#c13"
}
ListElement {
x: 120
y: 200
color: "#543"
}
ListElement {
x: 300
y: 177
color: "#fc3"
}
}
MouseArea {
id: mouse
anchors.fill: parent
onClicked: addItems()
}
}
// RectItem.qml
import QtQuick 2.0
Rectangle {
width: 50
height: 50
radius: 25
color: "#a33"
}