DelegateModelGroup QML Type
Umfasst eine gefilterte Menge visueller Datenelemente. Mehr...
| Import Statement: | import QtQml.Models |
Eigenschaften
- count : int
- includeByDefault : bool
- name : string
Signale
- changed(array removed, array inserted)
Methoden
- 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)
Ausführliche Beschreibung
Der Typ „DelegateModelGroup“ bietet die Möglichkeit, auf die Modelldaten der Delegate-Elemente eines „ DelegateModel “ zuzugreifen sowie diese Delegate-Elemente zu sortieren und zu filtern.
Die anfängliche Menge instanziierbarer Delegate-Elemente in einer „ DelegateModel “ wird durch ihre „ items “-Gruppe dargestellt, die normalerweise direkt den Inhalt des Modells widerspiegelt, das „ DelegateModel::model “ zugewiesen ist. Diese Menge kann auf den Inhalt eines beliebigen anderen Mitglieds von „ DelegateModel::groups “ geändert werden, indem der „ name “ dieser „DelegateModelGroup“ der Eigenschaft „ DelegateModel::filterOnGroup “ zugewiesen wird.
Auf die Daten eines Elements in einer DelegateModelGroup kann über die Funktion „ get()“ zugegriffen werden, die neben den Modelldaten auch Informationen zur Gruppenzugehörigkeit und zu Indizes zurückgibt. In Kombination mit der Funktion „ move()“ lässt sich damit die Sortierung von Ansichten implementieren, mit „ remove()“ können Elemente aus einer Ansicht herausgefiltert werden, und mit „ setGroups()“ sowie den Delegaten „ Package “ lassen sich Elemente in verschiedene Ansichten kategorisieren. Verschiedene Gruppen können nur dann unabhängig voneinander sortiert werden, wenn sie disjunkt sind. Das Verschieben eines Elements in einer Gruppe bewirkt auch dessen Verschiebung in allen anderen Gruppen, zu denen es gehört.
Daten aus Modellen können ergänzt werden, indem Daten mit der Funktion „ insert()“ direkt in eine „DelegateModelGroup“ eingefügt werden. Dies kann genutzt werden, um Schemelemente in eine Ansicht einzufügen oder Platzhalterelemente, die später mit echten Modelldaten „ resolved “ werden, sobald diese verfügbar sind.
Delegate-Elemente können ebenfalls direkt aus einer „DelegateModelGroup“ mithilfe der Funktion „ create()“ instanziiert werden. Dadurch ist es möglich, „ DelegateModel “ ohne einen zugehörigen Ansichtstyp zu verwenden oder bestimmte Elemente gezielt auszuwählen, die instanziiert werden sollen – unabhängig davon, ob sie sich derzeit im sichtbaren Bereich einer Ansicht befinden.
Siehe auch das Tutorial zur dynamischen Anordnung von Ansichten in QML.
Dokumentation zu Eigenschaften
count : int [read-only]
Diese Eigenschaft gibt die Anzahl der Elemente in der Gruppe an.
includeByDefault : bool
Diese Eigenschaft legt fest, ob dieser Gruppe standardmäßig neue Elemente zugewiesen werden.
name : string
Diese Eigenschaft enthält den Namen der Gruppe.
Jede Gruppe in einem Modell muss einen eindeutigen Namen haben, der mit einem Kleinbuchstaben beginnt.
Signal-Dokumentation
changed(array removed, array inserted)
Dieses Signal wird ausgelöst, wenn Elemente aus der Gruppe entfernt oder in die Gruppe eingefügt wurden.
Jedes Objekt in den Arrays „ removed “ und „ inserted “ enthält zwei Werte: den Index des ersten eingefügten oder entfernten Elements sowie die Anzahl der aufeinanderfolgenden Elemente, die eingefügt oder entfernt wurden.
Jeder Index wird um vorherige Änderungen bereinigt, wobei alle entfernten Elemente vor den eingefügten Elementen stehen.
Hinweis: Der entsprechende Handler ist onChanged.
Methodendokumentation
void addGroups(int index, int count, list<string> groups)
Fügt Artikel von „ count “ (ab index ) zu „ groups “ hinzu.
var create(int index)
var create(int index, jsdict data, array groups = undefined)
var create(jsdict data, array groups = undefined)
Gibt eine Referenz auf das instanziierte Element unter index in der Gruppe zurück.
Wird ein „ data “-Objekt übergeben, wird es unter index als „ inserted “ angelegt, und es wird ein Element zurückgegeben, das auf diesen neuen Eintrag verweist. Der optionale Parameter „ groups “ gibt die Gruppen an, zu denen der neue Eintrag gehören soll; wird er nicht angegeben, entspricht dies der Gruppe, für die „ create “ () aufgerufen wurde.
Alle von `create` zurückgegebenen Elemente werden der Gruppe „ persistedItems “ hinzugefügt. Elemente in dieser Gruppe bleiben instanziiert, solange sie von keiner Ansicht referenziert werden.
var get(int index)
Gibt ein JavaScript-Objekt zurück, das das Element unter index in der Gruppe beschreibt.
Das zurückgegebene Objekt enthält dieselben Informationen, die einem Delegaten über das angehängte DelegateModel zur Verfügung stehen, sowie das Modell für dieses Element. Es verfügt über folgende Eigenschaften:
- model: Die Modelldaten des Elements. Diese entsprechen der Eigenschaft „model context“ in einem Delegaten
- groups: Eine Liste der Namen der Gruppen, denen das Element angehört. Diese Eigenschaft kann überschrieben werden, um die Gruppenzugehörigkeit des Elements zu ändern.
- inItems Gibt an, ob das Element zur Gruppe „ items “ gehört. Durch das Schreiben in diese Eigenschaft wird das Element zur Gruppe hinzugefügt oder aus ihr entfernt.
- `itemsIndex `: Der Index des Elements innerhalb der Gruppe „ items “.
- in<GroupName> Gibt an, ob das Element zur dynamischen Gruppe „groupName“ gehört. Durch das Schreiben in diese Eigenschaft wird das Element zur Gruppe hinzugefügt oder aus ihr entfernt.
- <groupName>Index Der Index des Elements innerhalb der dynamischen Gruppe „groupName“.
- isUnresolved Gibt an, ob das Element an einen Index im Modell gebunden ist, das „ DelegateModel::model “ zugewiesen ist. Gibt „true“ zurück, wenn das Element nicht an das Modell gebunden ist, und „false“, wenn es gebunden ist.
void insert(int index, jsdict data, array groups = undefined)
void insert(jsdict data, var groups = undefined)
Erstellt einen neuen Eintrag unter index in einem DelegateModel mit den Werten aus data, die den Rollen im Modell entsprechen, die DelegateModel::model zugewiesen sind.
Wird kein Index angegeben, werden die Daten an das Modell angehängt.
Der optionale Parameter „ groups “ gibt die Gruppen an, zu denen der neue Eintrag gehören soll; wird er nicht angegeben, entspricht dies der Gruppe, für die der Befehl „insert“ aufgerufen wurde.
Daten, die in eine „ DelegateModel “ eingefügt wurden, können später mithilfe der Funktion „ resolve()“ mit einem bestehenden Eintrag in „ DelegateModel::model “ zusammengeführt werden. Dies kann genutzt werden, um Platzhalterelemente zu erstellen, die später durch tatsächliche Daten ersetzt werden.
void move(var from, var to, int count)
Verschiebt „ count “ unter from in der Gruppe „ to “ an eine neue Position.
Hinweis: „ DelegateModel “ fungiert als Proxy-Modell: Es enthält die Delegaten in einer anderen Reihenfolge als das „ underlying model “. Nachfolgende Änderungen am zugrunde liegenden Modell machen die von Ihnen über diese Funktion vorgenommene Neuanordnung nicht rückgängig.
void remove(int index, int count)
Entfernt die Elemente „ count “ ab „ index “ aus der Gruppe.
void removeGroups(int index, int count, list<string> groups)
Entfernt die „ count “-Elemente ab index von groups.
void resolve(int from, int to)
Ordnet ein unaufgelöstes Element unter from einem Element unter DelegateModel::model am Index to zu.
Unaufgelöste Elemente sind Einträge, deren Daten in inserted in ein DelegateModelGroup eingefügt wurden, anstatt aus einem Index unter DelegateModel::model abgeleitet zu werden. Durch das Auflösen eines Elements wird das Element am Zielindex durch das unaufgelöste Element ersetzt. Ein aufgelöstes Element spiegelt die Daten des Quellmodells an seinem verknüpften Index wider und wird wie jedes andere Element verschoben, wenn sich dieser Index verschiebt.
Wird ein neues Element im onChanged()-Handler von „ DelegateModelGroup “ ersetzt, werden dessen Einfügung und Ersetzung als atomare Operation an die Ansichten übermittelt, wodurch der Eindruck entsteht, dass sich der Modellinhalt nicht geändert hat – oder, falls das unaufgelöste und das Modellelement nicht nebeneinander liegen, dass sich das zuvor unaufgelöste Element lediglich verschoben hat.
void setGroups(int index, int count, list<string> groups)
Ändert die Gruppenzugehörigkeit der Elemente unter count, beginnend mit index. Die Elemente werden aus ihren bisherigen Gruppen entfernt und der Gruppe groups hinzugefügt.
© 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.