Repeater

Последнее обновление: 23.12.2023

Элемент Repeater позволяет повторить некоторый элемент определенное количество раз. Этот элемент применяется, когда надо определить множество однотипных элементов.

Для определения набора элементов тип Repeater предоставляет свойств model, которое может принимать следующие значения:

  • числовое значение - указывает на количество создаваемых элементов

  • набор данных, по которым создаются элементы. В качестве набора может выступать список объектов, строк или модель типа ListModel или QAbstractItemModel

Например, нам надо определить 3 прямоугольника:

import QtQuick
import QtQuick.Layouts

Window {
    width: 280
    height: 200
    visible: true
    title: "METANIT.COM"

    Row{
        anchors.fill: parent
        padding: 5
        spacing: 5

        Repeater{
            model: 3        // повторяем элемент Rectangle 3 раза
            Rectangle{
                height: 80
                width: 80
                color: "#16a085"
            }
        }
    }
}
Элемент Repeater в Qml и Qt

Создадим три разноцветных прямоугольника:

import QtQuick
import QtQuick.Layouts

Window {
    width: 280
    height: 200
    visible: true
    title: "METANIT.COM"

    Row{
        anchors.fill: parent
        padding: 5
        spacing: 5

        Repeater{
            model: ["#eb4d4b", "#16a085", "#0984e3"]    // цвет прямоугольников
            Rectangle{
                height: 80
                width: 80
                color: modelData
            }
        }
    }
}
Повторение элементов с помощью Repeater в Qml и Qt

Здесь свойство model представляет массив строк, которые представляют шестнадцатеричные цветовые коды

model: ["#eb4d4b", "#16a085", "#0984e3"]

В массиве 3 элемента, и для каждого из этих элементов создается прямоугольник. Внутри элемента (прямоугольника) мы можем получить текущее значение массива через свойство modelData. В примере выше значение этого свойства присваивается свойству color, то есть устанавливаем цвет прямоугольника.

Другой пример:

import QtQuick
import QtQuick.Layouts

Window {
    width: 280
    height: 200
    visible: true
    title: "METANIT.COM"

    Column {
        spacing: 5
        Repeater {
            model: ["С++", "C#", "Java", "Python", "JavaScript"]
            Text {
                font.pixelSize: 16
                text: "Language: " + modelData
            }
        }
    }
}

Здесь аналогично для каждого значения из массива в model создается элемент Text, для установки текста которого применяется текущее значение из массива:

Повторение элемента и modelData в Repeater в Qml и Qt
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850