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
        }
      }
    }
  }
Другие вопросы по тегам