Spec-Zone.ru › Qt 5.13

Тип QML Repeater

Инициализирует несколько компонентов на основе Item с помощью предоставленной модели. Подробнее...

Оператор импорта: import QtQuick 2.13
Наследует:

Item

  • Список всех членов, включая унаследованные

Свойства

  • count : int
  • delegate : Component
  • model : any

Сигналы

  • itemAdded(index, Item item)
  • itemRemoved(index, Item item)

Методы

  • Item itemAt(index)

Подробное описание

Тип Repeater используется для создания большого количества похожих элементов. Как и другие типы представлений, Repeater имеет свойство model и delegate: для каждой записи в модели, делегат создается в контексте, заполненном данными из модели. Элемент Repeater обычно заключён в тип позиционера, например, Row или Column, чтобы визуально расположить несколько элементов делегата, созданных Repeater.

Следующий Repeater создаёт три экземпляра элемента Rectangle в пределах Row:

import QtQuick 2.0

Row {
    Repeater {
        model: 3
        Rectangle {
            width: 100; height: 40
            border.width: 1
            color: "yellow"
        }
    }
}

Модель model Repeater может быть любой из поддерживаемых моделей данных. Кроме того, как и делегаты для других представлений, делегат Repeater может получить доступ к своему индексу в пределах Repeater, а также к соответствующим данным модели. См. документацию свойства delegate для получения подробностей.

Элементы, инициализированные Repeater, вставляются в порядке следования как дочерние элементы родителя Repeater. Вставка начинается сразу после позиции Repeater в списке стеков родителя. Это позволяет использовать Repeater внутри макета. Например, элементы следующего Repeater размещаются между красным и синим прямоугольником:

Row {
    Rectangle { width: 10; height: 20; color: "red" }
    Repeater {
        model: 10
        Rectangle { width: 20; height: 20; radius: 10; color: "green" }
    }
    Rectangle { width: 10; height: 20; color: "blue" }
}

Примечание: Элемент Repeater владеет всеми создаваемыми им элементами. Удаление или динамическое уничтожение элемента, созданного Repeater, может привести к непредсказуемому поведению.

Учёт при использовании Repeater

Тип Repeater создаёт все свои элементы делегата при первом создании Repeater. Это может быть неэффективно, если количество элементов делегата велико, и не все элементы требуется отображать одновременно. В этом случае рассмотрите использование других типов представлений, например ListView (который создаёт элементы делегата только при прокрутке в область просмотра) или используйте методы динамического создания объектов для создания элементов по мере необходимости.

Также обратите внимание, что Repeater основан на Item и может повторять только объекты, производные от Item. Например, он не может использоваться для повторения QtObjects:

// bad code:
Item {
    // Can't repeat QtObject as it doesn't derive from Item.
    Repeater {
        model: 10
        QtObject {}
    }
}

Документация по свойствам

count : int

Это свойство содержит количество элементов в модели.

Примечание: Количество элементов в модели, сообщаемое свойством count, может отличаться от количества созданных делегатов, если Repeater находится в процессе инициализации делегатов или настроен неправильно.

[по умолчанию] delegate : Component

Делегат предоставляет шаблон, определяющий каждый элемент, инициализированный повторителем.

Делегаты получают доступ к свойству index только для чтения, которое указывает индекс делегата в пределах повторителя. Например, следующий делегат Text отображает индекс каждого повторяющегося элемента:

Column {
    Repeater {
        model: 10
        Text { text: "I'm item " + index }
    }
}

Если model представляет собой список строк или список объектов, делегат также получает доступ к свойству modelData только для чтения, содержащему данные строки или объекта. Например:

Column {
    Repeater {
        model: ["apples", "oranges", "pears"]
        Text { text: "Data: " + modelData }
    }
}

Если model является объектом модели (таким как ListModel), делегат может получить доступ ко всем ролям модели как к именованным свойствам, так же, как и делегаты для типов представлений, таких как ListView.

См. также QML Модели данных.

model : any

Модель, предоставляющая данные для повторителя.

Это свойство может быть установлено на любую из поддерживаемых моделей данных:

  • Число, обозначающее количество делегатов, которые должен создать повторитель
  • Модель (например, элемент ListModel или подкласс QAbstractItemModel)
  • Список строк
  • Список объектов

Тип модели влияет на свойства, доступные делегату delegate.

См. также Модели данных.

Документация по сигналам

itemAdded(index, Item item)

Этот сигнал генерируется при добавлении элемента в повторитель. Параметр index содержит индекс, на котором был вставлен элемент в повторителе, а параметр item содержит добавленный Item.

Соответствующий обработчик — onItemAdded.

itemRemoved(index, Item item)

Этот сигнал генерируется при удалении элемента из повторителя. Параметр index содержит индекс, с которого был удален элемент из повторителя, а параметр item содержит удалённый Item.

Не сохраняйте ссылку на item, если он был создан этим повторителем, так как в этих случаях он будет удалён вскоре после обработки сигнала.

Соответствующий обработчик — onItemRemoved.

Документация по методам

Item itemAt(index)

Возвращает Item, созданный по указанному index, или null, если элемент с данным index не существует.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-qtquick-repeater.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API