En esta página

Repeater QML Type

Instancia un número de componentes basados en ítems utilizando un modelo proporcionado. Más...

Import Statement: import QtQuick
Inherits:

Item

Propiedades

Señales

Métodos

Descripción detallada

El tipo Repetidor se utiliza para crear un gran número de elementos similares. Al igual que otros tipos de vista, un Repetidor tiene un model y un delegate: para cada entrada del modelo, el delegado se instancia en un contexto sembrado con datos del modelo. Un elemento Repeater suele estar encerrado en un tipo de posicionador como Row o Column para posicionar visualmente los múltiples elementos delegados creados por el Repeater.

El siguiente Repetidor crea tres instancias de un elemento Rectangle dentro de un Row:

import QtQuick

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

El model de un Repetidor puede ser cualquiera de los modelos de datos admitidos. Además, al igual que los delegados de otras vistas, un delegado de repetidor puede acceder a su índice dentro del repetidor, así como a los datos del modelo relevantes para el delegado. Para obtener más información, consulte la documentación de la propiedad delegate.

Los elementos instanciados por el repetidor se insertan, en orden, como hijos del padre del repetidor. La inserción comienza inmediatamente después de la posición del repetidor en su lista de apilamiento padre. Esto permite utilizar un repetidor dentro de un diseño. Por ejemplo, los siguientes elementos del repetidor se apilan entre un rectángulo rojo y un rectángulo azul:

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" }
}

Nota: Un elemento Repeater es propietario de todos los elementos que instancia. Si se elimina o destruye dinámicamente un elemento creado por un repetidor, se produce un comportamiento impredecible.

Consideraciones al utilizar Repeater

El tipo Repeater crea todos sus elementos delegados cuando se crea el repetidor por primera vez. Esto puede resultar ineficaz si hay un gran número de elementos delegados y no se requiere que todos los elementos estén visibles al mismo tiempo. Si este es el caso, considere la posibilidad de utilizar otros tipos de vista como ListView (que sólo crea elementos delegados cuando se desplazan a la vista) o utilice los métodos de Dynamic Object Creation para crear elementos a medida que se necesitan.

Además, tenga en cuenta que Repeater se basa en Item y sólo puede repetir objetos derivados de Item. Por ejemplo, no puede utilizarse para repetir QtObjects:

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

Documentación de Propiedades

count : int [read-only]

Esta propiedad contiene el número de elementos de model.

El valor de count no siempre coincide con el número de delegates instanciados; utilice itemAt() para comprobar si existe un delegado en un índice dado. Devuelve null si el delegado no está instanciado.

  • Mientras el Repetidor está en el proceso de instanciar delegados (en el arranque, o debido a cambios en model ), la señal itemAdded se emite para cada delegado creado, y la propiedad count cambia después.
  • Si el repetidor no forma parte de una jerarquía visual completa, count refleja el tamaño del modelo, pero no se crean delegados.
  • Si el Repetidor destruye delegados debido a cambios en model, se emite la señal itemRemoved() para cada uno, y la propiedad count cambia después.
  • Si el Repetidor se retira de la jerarquía visual (por ejemplo, estableciendo parent = null), se destruyen delegados, se emite la señal itemRemoved() para cada uno, pero count no cambia.

Véase también itemAt(), itemAdded(), y itemRemoved().

delegate : Component [default]

El delegado proporciona una plantilla que define cada elemento instanciado por el repetidor.

Los delegados se exponen a una propiedad de sólo lectura index que indica el índice del delegado dentro del repetidor. Por ejemplo, el siguiente delegado Text muestra el índice de cada elemento repetido:

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

Si model es una lista de cadenas o de objetos, el delegado también se expone a una propiedad modelData de sólo lectura que contiene los datos de la cadena o del objeto. Por ejemplo:

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

Si model es un objeto modelo (como ListModel), el delegado puede acceder a todas las funciones del modelo como propiedades con nombre, del mismo modo que los delegados lo hacen para las clases de vista como ListView.

Véase también Modelos de datos QML.

delegateModelAccess : enumeration [since 6.10]

Esta propiedad determina cómo los delegados pueden acceder al modelo.

ConstanteDescripción
DelegateModel.ReadOnlyProhíbe a los delegados escribir el modelo a través de las propiedades de contexto, el objeto model o las propiedades requeridas.
DelegateModel.ReadWritePermite a los delegados escribir el modelo a través de las propiedades de contexto, el objeto model o las propiedades requeridas.
DelegateModel.Qt5ReadWritePermitir a los delegados escribir el modelo a través del objeto model y las propiedades de contexto, pero no a través de las propiedades requeridas.

El valor por defecto es DelegateModel.Qt5ReadWrite.

Esta propiedad se introdujo en Qt 6.10.

Ver también Modelos y Vistas en Qt Quick#CambiandoDatos del Modelo.

model : var

El modelo que proporciona los datos para el repetidor.

Esta propiedad puede establecerse a cualquiera de los modelos de datos soportados:

  • Un número que indica el número de delegados que debe crear el repetidor.
  • Un modelo (por ejemplo, un elemento de ListModel, o una subclase de QAbstractItemModel )
  • Una lista de cadenas
  • Una lista de objetos

El tipo de modelo afecta a las propiedades que se exponen a delegate.

Véase también Modelos de datos.

Documentación de señales

itemAdded(int index, Item item)

Esta señal se emite cuando se añade un elemento al repetidor. El parámetro index contiene el índice en el que se ha insertado el elemento dentro del repetidor, y el parámetro item contiene el Item que se ha añadido.

Nota: El manejador correspondiente es onItemAdded.

itemRemoved(int index, Item item)

Esta señal se emite cuando se elimina un elemento del repetidor. El parámetro index contiene el índice en el que el elemento fue eliminado del repetidor, y el parámetro item contiene el Item que fue eliminado.

No mantengas una referencia a item si fue creado por este repetidor, ya que en estos casos será eliminado poco después de que se gestione la señal.

Nota: El manejador correspondiente es onItemRemoved.

Documentación del método

Item itemAt(index)

Devuelve el Item que se ha creado en el index dado , o null si no existe ningún elemento en index.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.