Qml: компонент Делегат / Модель для плавающих элементов модели
У меня есть динамический набор компонентов QML (они основаны на / объединяют различные элементы управления, такие как изображения, метки,...), которые отображаются в "произвольных" позициях в родительском элементе управления. Положение каждого компонента определяется базовым объектом (C++). В настоящий момент я создаю и удаляю эти компоненты, используя динамическое создание объектов, каждый раз, когда создается или удаляется новый базовый объект.
Хотя это работает, было бы намного понятнее использовать схему делегата / модели с базовым QAbstractItemModel. Есть ли встроенный компонент для этого, например, компонент, который позволяет свободное позиционирование элементов QAbstractItemModel?
[РЕДАКТИРОВАТЬ]: Вот изображение того, что я имею в виду:
С Уважением,
1 ответ
Вы можете использовать Repeater
, который обычно используется со строкой или столбцом для разметки, но он также будет работать для отдельных элементов.
В дополнение к этому у вас также есть сигналы для добавления и удаления предметов.
Repeater {
model: 20
delegate: Rectangle {
width: 50
height: 50
color: Qt.rgba(Math.random(), Math.random(), Math.random(), 1)
MouseArea {
anchors.fill: parent
onPositionChanged: {
parent.x += mouseX
parent.y += mouseY
}
}
}
}