DelegateModelGroup QML Type

フィルタリングされたビジュアル・データ・アイテムのセットをカプセル化します。詳細...

Import Statement: import QtQml.Models

プロパティ

信号

  • changed(array removed, array inserted)

方法

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

詳細な説明

DelegateModelGroup 型は、DelegateModel のデリゲート・アイテムのモデル・データを扱ったり、これらのデリゲート・アイテムをソートしたりフィルタリングしたりするための手段を提供する。

DelegateModel items DelegateModel::modelこのセットは、DelegateModelGroup のnameDelegateModel::filterOnGroup プロパティに代入することで、DelegateModel::groups の他のメンバーの内容に変更することができる。

DelegateModelGroup 内のアイテムのデータには、get() 関数を使用してアクセスすることができます。この関数は、モデル・データだけでなく、グループ・メンバーシップやインデックスに関する情報も返します。move() 関数と組み合わせることで、remove() を使用してビューから項目をフィルタリングしたり、setGroups() やPackage デリゲートを使用して項目を異なるビューに分類したりと、ビューのソートを実装するために使用することができます。異なるグループは、それらが分離している場合にのみ独立してソートすることができます。あるグループのアイテムを移動させると、そのアイテムが属する他のすべてのグループのアイテムも移動します。

モデルからのデータは、insert() 関数を使用して DelegateModelGroup に直接データを挿入することで補足することができます。これは、ビューにモックアイテムを導入するために使用することができます。また、後で実際のモデルデータが利用可能になったときに、resolved 、プレースホルダーアイテムを導入することもできます。

また、create() 関数を使用することで、DelegateModelGroup から Delegate アイテムを直接インスタンス化することができます。これにより、DelegateModel をビューの種類に関係なく使用したり、ビューの可視領域内にあるかどうかに関係なく、インスタンス化すべき特定のアイテムを選択したりすることができます。

QML Dynamic View Ordering Tutorialも参照してください

プロパティの説明

count : int [read-only]

このプロパティは、グループ内のアイテムの数を保持します。


includeByDefault : bool

このプロパティは、新しいアイテムがデフォルトでこのグループに割り当てられるかどうかを保持します。


name : string

このプロパティは、グループの名前を保持します。

モデル内の各グループは、小文字で始まる一意の名前を持つ必要があります。


シグナル

changed(array removed, array inserted)

このシグナルは、アイテムがグループから削除されたり、グループに挿入されたりしたときに発せられます。

removedinserted 配列の各オブジェクトは、挿入または削除された最初のアイテムのインデックスと、挿入または削除されたアイテムの連続数のカウントの2つの値を持ちます。

各インデックスは、挿入された項目の前にすべての削除された項目があるように、以前の変更に対して調整される。

注意: 対応するハンドラはonChanged です。


メソッドのドキュメント

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

insert(jsdict data, var groups = undefined)

DelegateModel::model に割り当てられたモデル内のロールに対応するdata からの値で、DelegateModelindex に新しいエントリを作成します。

インデックスが指定されない場合、データはモデルに追加されます。

オプションのgroups パラメータは、新しいエントリが属するグループを指定します。指定されていない場合、これはinsertが呼び出されたグループと等しくなります。

DelegateModel に挿入されたデータは、後でresolve() 関数を使用してDelegateModel::model の既存のエントリとマージすることができます。これは、後で実際のデータに置き換えるプレースホルダー項目を作成するために使用できる。


create(int index)

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

create(jsdict data, array groups = undefined)

グループ内のindex でインスタンス化された項目への参照を返す。

data オブジェクトが指定された場合、それはindexinserted となり、この新しいエントリを参照する項目が返されます。オプションのgroups パラメータは、新しいエントリが属するべきグループを指定します。 未指定の場合、これはcreate() がコールされたグループと等しくなります。

createによって返されたすべての項目は、persistedItems グループに追加されます。このグループのアイテムは、どのビューからも参照されない場合、インスタンス化されたままになります。


addGroups(int index, int count, stringlist groups)

index で始まるcount アイテムをgroups に追加します。


object get(int index)

グループ内のindex のアイテムを説明する javascript オブジェクトを返します。

返されたオブジェクトには、DelegateModel にアタッチされたデリゲートが利用できる情報と、そのアイテムのモデルが含まれています。プロパティは以下の通りです:

  • modelアイテムのモデルデータ。これは、デリゲートのモデルコンテキストプロパティと同じです。
  • groupsそのアイテムが属しているグループ名のリスト。このプロパティは、アイテムのメンバーシップを変更するために書き込むことができる。
  • inItemsそのアイテムがitems グループに属しているかどうか。このプロパティに書き込むことで、アイテムをグループから追加または削除することができる。
  • itemsIndex items グループ内のアイテムのインデックス。
  • in<GroupName>そのアイテムが動的グループgroupName に属しているかどうか。このプロパティに書き込むと、項目がグループから追加または削除されます。
  • <groupName>Index動的グループgroupName 内の項目のインデックス。
  • isUnresolved項目がDelegateModel::model に割り当てられているモデル内のインデックスにバインドされているかどうか。項目がモデルにバインドされていない場合は true、バインドされている場合は false を返します。

move(var from, var to, int count)

to グループのfrom にあるcount を新しい位置に移動します。

注: DelegateModel は代理モデルとして動作します:underlying model が持つ順序とは異なる順序でデリゲートを保持します。その後に基礎となるモデルを変更しても、この関数で行った順序の変更は元に戻りません。


remove(int index, int count)

index から始まるcount アイテムをグループから削除します。


removeGroups(int index, int count, stringlist groups)

index で始まるcount アイテムをgroups から削除します。


resolve(int from, int to)

from の未解決項目をDelegateModel::model のインデックスto の項目に結合します。

未解決項目とは、DelegateModel::model インデックスから派生したのではなく、DelegateModelGroup にデータがinserted された項目である。アイテムを解決すると、対象のインデックスのアイテムは未解決のアイテムに置き換えられます。解決された項目は、そのバインドインデックスにソースモデルのデータを反映し、他の項目と同様にそのインデックスが移動すると移動します。

新しいアイテムがDelegateModelGroup onChanged() ハンドラで置き換えられると、その挿入と置き換えはアトミックな操作としてビューに伝えられ、モデルの内容が変更されていないように見せかけたり、未解決のアイテムとモデルのアイテムが隣接していない場合は、以前に未解決だったアイテムが単に移動したように見せかけたりします。


setGroups(int index, int count, stringlist groups)

index から始まるcount アイテムのグループ・メンバーシップを変更します。アイテムは既存のグループから削除され、groups に追加されます。


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