Repeater QML Type
Instancia un número de componentes basados en ítems utilizando un modelo proporcionado. Más...
| Import Statement: | import QtQuick |
| Inherits: |
Propiedades
- count : int
- delegate : Component
- delegateModelAccess : enumeration
(since 6.10) - model : var
Señales
- itemAdded(int index, Item item)
- itemRemoved(int index, Item item)
Métodos
- Item itemAt(index)
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 propiedadcountcambia después. - Si el repetidor no forma parte de una jerarquía visual completa,
countrefleja 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 propiedadcountcambia 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, perocountno 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:
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:
|
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.
| Constante | Descripción |
|---|---|
DelegateModel.ReadOnly | Prohíbe a los delegados escribir el modelo a través de las propiedades de contexto, el objeto model o las propiedades requeridas. |
DelegateModel.ReadWrite | Permite a los delegados escribir el modelo a través de las propiedades de contexto, el objeto model o las propiedades requeridas. |
DelegateModel.Qt5ReadWrite | Permitir 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.

