En esta página

DelegateModelGroup QML Type

Encapsula un conjunto filtrado de elementos de datos visuales. Más...

Import Statement: import QtQml.Models

Propiedades

Señales

  • changed(array removed, array inserted)

Métodos

  • void addGroups(int index, int count, list<string> groups)
  • var create(int index)
  • var create(jsdict data, array groups)
  • var create(int index, jsdict data, array groups)
  • object get(int index)
  • void insert(jsdict data, var groups)
  • void insert(int index, jsdict data, array groups)
  • void move(var from, var to, int count)
  • void remove(int index, int count)
  • void removeGroups(int index, int count, list<string> groups)
  • void resolve(int from, int to)
  • void setGroups(int index, int count, list<string> groups)

Descripción detallada

El tipo DelegateModelGroup proporciona un medio para direccionar los datos del modelo de los elementos delegados de un DelegateModel, así como para ordenar y filtrar estos elementos delegados.

El conjunto inicial de elementos delegados instanciables en un DelegateModel está representado por su grupo items, que normalmente refleja directamente el contenido del modelo asignado a DelegateModel::model. Este conjunto puede cambiarse por el contenido de cualquier otro miembro de DelegateModel::groups asignando el name de ese DelegateModelGroup a la propiedad DelegateModel::filterOnGroup.

Se puede acceder a los datos de un elemento de un DelegateModelGroup mediante la función get(), que devuelve información sobre la pertenencia al grupo y los índices, así como los datos del modelo. En combinación con la función move() puede utilizarse para implementar la ordenación de vistas, con remove() para filtrar elementos fuera de una vista, o con los delegados setGroups() y Package para clasificar elementos en diferentes vistas. Los distintos grupos sólo pueden ordenarse independientemente si son disjuntos. Si se mueve un elemento en un grupo, también se moverá en todos los demás grupos de los que forme parte.

Los datos de los modelos pueden complementarse insertando datos directamente en un DelegateModelGroup con la función insert(). Esto se puede utilizar para introducir elementos simulados en una vista, o elementos de marcador de posición que más tarde se resolved a los datos del modelo real cuando esté disponible.

Los elementos delegados también se pueden instanciar directamente desde un DelegateModelGroup mediante la función create(), lo que permite utilizar DelegateModel sin un tipo de vista que lo acompañe o seleccionar elementos específicos que se deben instanciar independientemente de si se encuentran dentro del área visible de una vista.

Véase también Tutorial de ordenación dinámica de vistas QML.

Documentación de propiedades

count : int [read-only]

Esta propiedad contiene el número de elementos del grupo.

includeByDefault : bool

Esta propiedad indica si los nuevos elementos se asignan a este grupo por defecto.

name : string

Esta propiedad contiene el nombre del grupo.

Cada grupo de un modelo debe tener un nombre único que empiece por minúscula.

Documentación de señales

changed(array removed, array inserted)

Esta señal se emite cuando se han eliminado o insertado elementos en el grupo.

Cada objeto de las matrices removed y inserted tiene dos valores: el índice del primer elemento insertado o eliminado y un recuento del número de elementos consecutivos insertados o eliminados.

Cada índice se ajusta en función de los cambios anteriores, de modo que todos los elementos eliminados preceden a los insertados.

Nota: El manejador correspondiente es onChanged.

Documentación del método

void addGroups(int index, int count, list<string> groups)

Añade count artículos a partir de index a groups.

var create(int index)

var create(int index, jsdict data, array groups = undefined)

var create(jsdict data, array groups = undefined)

Devuelve una referencia al elemento instanciado en index en el grupo.

Si se proporciona un objeto data será inserted en index y se devolverá un elemento que hace referencia a esta nueva entrada. El parámetro opcional groups identifica los grupos a los que debe pertenecer la nueva entrada, si no se especifica es igual al grupo al que se llamó create().

Todos los elementos devueltos por create se añaden al grupo persistedItems. Los elementos de este grupo permanecen instanciados cuando no son referenciados por ninguna vista.

object get(int index)

Devuelve un objeto javascript que describe el elemento en index en el grupo.

El objeto devuelto contiene la misma información que está disponible para un delegado del DelegateModel adjunto, así como el modelo para ese elemento. Tiene las propiedades

  • model Los datos del modelo del elemento. Es lo mismo que la propiedad de contexto del modelo en un delegado.
  • groups Una lista con los nombres de los grupos a los que pertenece el elemento. Esta propiedad se puede escribir para cambiar la pertenencia del elemento.
  • inItems Si el elemento pertenece al grupo items. Si se escribe en esta propiedad se añadirá o eliminará el elemento del grupo.
  • itemsIndex El índice del elemento dentro del grupo items.
  • in<GroupName> Si el elemento pertenece al grupo dinámico groupName. Al escribir en esta propiedad se añadirá o eliminará el elemento del grupo.
  • <nombredelgrupo>Index El índice del elemento dentro del grupo dinámico nombredelgrupo.
  • isUnresolved Si el elemento está vinculado a un índice en el modelo asignado a DelegateModel::model. Devuelve true si el elemento no está vinculado al modelo, y false si lo está.

void insert(int index, jsdict data, array groups = undefined)

void insert(jsdict data, var groups = undefined)

Crea una nueva entrada en index en un DelegateModel con los valores de data que corresponden a roles en el modelo asignado a DelegateModel::model.

Si no se proporciona ningún índice, los datos se añaden al modelo.

El parámetro opcional groups identifica los grupos a los que debe pertenecer la nueva entrada, si no se especifica es igual al grupo en el que se llamó a insertar.

Los datos insertados en DelegateModel pueden combinarse posteriormente con una entrada existente en DelegateModel::model mediante la función resolve(). Esto puede utilizarse para crear marcadores de posición que posteriormente se sustituirán por datos reales.

void move(var from, var to, int count)

Mueve count a from en un grupo to una nueva posición.

Nota: El DelegateModel actúa como un modelo proxy: mantiene los delegados en un orden diferente al que los tiene el underlying model. Cualquier cambio posterior en el modelo subyacente no deshará la reordenación que hayas hecho mediante esta función.

void remove(int index, int count)

Elimina del grupo los elementos de count que comienzan en index.

void removeGroups(int index, int count, list<string> groups)

Elimina los elementos de count que comienzan en index de groups.

void resolve(int from, int to)

Vincula un elemento no resuelto en from a un elemento en DelegateModel::model en el índice to.

Los elementos no resueltos son entradas cuyos datos se han inserted en un DelegateModelGroup en lugar de derivarse de un índice DelegateModel::model. La resolución de un elemento sustituirá el elemento del índice de destino por el elemento no resuelto. Un elemento resuelto reflejará los datos del modelo de origen en su índice de destino y se moverá cuando ese índice se mueva como cualquier otro elemento.

Si se sustituye un nuevo elemento en el manejador DelegateModelGroup onChanged() su inserción y sustitución se comunicará a las vistas como una operación atómica, creando la apariencia de que el contenido del modelo no ha cambiado, o si el elemento no resuelto y el elemento modelo no son adyacentes que el elemento no resuelto anteriormente simplemente se ha movido.

void setGroups(int index, int count, list<string> groups)

Cambia la pertenencia a grupos de los elementos de count a partir de index. Los elementos se eliminan de sus grupos existentes y se añaden a groups.

© 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.