Sur cette page

DelegateModelGroup QML Type

Regroupe un ensemble filtré d'éléments de données visuelles. En savoir plus...

Import Statement: import QtQml.Models

Propriétés

Signaux

  • changed(array removed, array inserted)

Méthodes

  • 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)
  • var 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)

Description détaillée

Le type DelegateModelGroup permet d'accéder aux données de modèle des éléments délégués d'un groupe de délégués ( DelegateModel), ainsi que de trier et de filtrer ces éléments délégués.

L'ensemble initial d'éléments délégués instanciables dans une DelegateModel est représenté par son groupe items, qui reflète normalement directement le contenu du modèle attribué à DelegateModel::model. Cet ensemble peut être remplacé par le contenu de n'importe quel autre membre de DelegateModel::groups en attribuant l'name de ce DelegateModelGroup à la propriété DelegateModel::filterOnGroup.

Les données d’un élément d’un DelegateModelGroup sont accessibles via la fonction get(), qui renvoie des informations sur l’appartenance au groupe et les index, ainsi que les données du modèle. En combinaison avec la fonction move(), cela permet de mettre en œuvre le tri des vues ; avec remove() pour filtrer des éléments d’une vue ; ou avec setGroups() et les délégués Package pour classer les éléments dans différentes vues. Les différents groupes ne peuvent être triés indépendamment que s’ils sont disjoints. Le déplacement d’un élément dans un groupe entraîne également son déplacement dans tous les autres groupes dont il fait partie.

Les données provenant des modèles peuvent être complétées en insérant directement des données dans un `DelegateModelGroup` à l’aide de la fonction ` insert()`. Cela permet d’introduire des éléments fictifs dans une vue, ou des éléments de remplacement qui seront ultérieurement ` resolved ` aux données réelles du modèle dès qu’elles seront disponibles.

Les éléments délégués peuvent également être instanciés directement à partir d’un DelegateModelGroup à l’aide de la fonction create(), ce qui permet d’utiliser l’ DelegateModel sans type de vue associé ou de sélectionner des éléments spécifiques à instancier, qu’ils se trouvent ou non dans la zone visible d’une vue.

Voir également le tutoriel sur le tri dynamique des vues QML.

Documentation sur les propriétés

count : int [read-only]

Cette propriété contient le nombre d'éléments du groupe.

includeByDefault : bool

Cette propriété détermine si les nouveaux éléments sont affectés à ce groupe par défaut.

name : string

Cette propriété contient le nom du groupe.

Chaque groupe d'un modèle doit avoir un nom unique commençant par une lettre minuscule.

Documentation Signal

changed(array removed, array inserted)

Ce signal est émis lorsque des éléments ont été supprimés du groupe ou y ont été ajoutés.

Chaque élément des tableaux « removed » et « inserted » comporte deux valeurs : l'index du premier élément inséré ou supprimé, et le nombre d'éléments consécutifs insérés ou supprimés.

Chaque index est ajusté en fonction des modifications précédentes, tous les éléments supprimés précédant les éléments insérés.

Remarque : le gestionnaire correspondant est onChanged.

Documentation des méthodes

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

Ajoute les articles de la rubrique « count » (à partir de index ) à la rubrique « groups ».

var create(int index)

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

var create(jsdict data, array groups = undefined)

Renvoie une référence à l'élément instancié à l'adresse index au sein du groupe.

Si un objet ` data ` est fourni, il sera ` inserted ` à l'adresse index et un élément référençant cette nouvelle entrée sera renvoyé. Le paramètre facultatif ` groups ` identifie les groupes auxquels la nouvelle entrée doit appartenir ; s'il n'est pas spécifié, il correspond au groupe sur lequel la fonction ` create()` a été appelée.

Tous les éléments renvoyés par la méthode `create` sont ajoutés au groupe ` persistedItems `. Les éléments de ce groupe restent instanciés lorsqu’ils ne sont référencés par aucune vue.

var get(int index)

Renvoie un objet JavaScript décrivant l'élément situé à l'adresse index au sein du groupe.

L'objet renvoyé contient les mêmes informations que celles accessibles à un délégué à partir de l'DelegateModel e associé, ainsi que le modèle de cet élément. Il possède les propriétés suivantes :

  • model: les données du modèle de l’élément. Elle correspond à la propriété « model context » d’un délégué
  • groups: une liste des noms des groupes dont l'élément est membre. Cette propriété peut être modifiée pour changer l'appartenance de l'élément.
  • inItems: indique si l’élément appartient au groupe « items ». La modification de cette propriété permet d’ajouter ou de supprimer l’élément du groupe.
  • itemsIndex: l'index de l'élément au sein du groupe « items ».
  • in<GroupName> Indique si l’élément appartient au groupe dynamique groupName. La modification de cette propriété permet d’ajouter ou de supprimer l’élément du groupe.
  • <groupName>Index: l’index de l’élément au sein du groupe dynamique groupName.
  • isUnresolved Indique si l'élément est lié à un index du modèle attribué à « DelegateModel::model ». Renvoie « true » si l'élément n'est pas lié au modèle, et « false » s'il l'est.

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

void insert(jsdict data, var groups = undefined)

Crée une nouvelle entrée à l'adresse index dans une DelegateModel avec les valeurs provenant de data qui correspondent aux rôles du modèle attribués à DelegateModel::model.

Si aucun index n’est fourni, les données sont ajoutées à la fin du modèle.

Le paramètre facultatif groups identifie les groupes auxquels la nouvelle entrée doit appartenir ; s’il n’est pas spécifié, il est égal au groupe sur lequel la commande insert a été appelée.

Les données insérées dans une DelegateModel peuvent ensuite être fusionnées avec une entrée existante dans DelegateModel::model à l’aide de la fonction resolve(). Cela permet de créer des éléments de remplacement qui seront ultérieurement remplacés par des données réelles.

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

Déplace l'count, accessible à l'adresse from, au sein du groupe to, vers une nouvelle position.

Remarque : l’ DelegateModel fait office de modèle proxy : il contient les délégués dans un ordre différent de celui de l’ underlying model. Toute modification ultérieure apportée au modèle sous-jacent n’annulera pas le réordonnancement que vous avez effectué via cette fonction.

void remove(int index, int count)

Supprime du groupe les éléments « count » dont l'adresse commence par index.

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

Supprime les éléments « count » à partir de l'adresse index de la liste groups.

void resolve(int from, int to)

Associe un élément non résolu situé à l'adresse from à un élément présent à l'adresse DelegateModel::model, à l'index to.

Les éléments non résolus sont des entrées dont les données ont été inserted dans un DelegateModelGroup au lieu d’être dérivées d’un index DelegateModel::model. La résolution d’un élément remplacera l’élément situé à l’index cible par l’élément non résolu. Un élément résolu reflétera les données du modèle source à son index lié et se déplacera lorsque cet index se déplacera, comme n’importe quel autre élément.

Si un nouvel élément est remplacé dans le gestionnaire onChanged() de l’ DelegateModelGroup, son insertion et son remplacement seront communiqués aux vues sous la forme d’une opération atomique, donnant l’impression que le contenu du modèle n’a pas changé, ou, si l’élément non résolu et l’élément du modèle ne sont pas adjacents, que l’élément précédemment non résolu a simplement été déplacé.

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

Modifie l'appartenance aux groupes des éléments de count à partir de index. Ces éléments sont retirés de leurs groupes actuels et ajoutés à 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.