DelegateModelGroup QML Type
フィルタリングされたビジュアル・データ・アイテムのセットをカプセル化します。詳細...
Import Statement: | import QtQml.Models |
プロパティ
- count : int
- includeByDefault : bool
- name : string
シグナル
- 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このセットは、DelegateModel::filterOnGroup プロパティに DelegateModelGroup のname を代入することで、DelegateModel::groups の他のメンバーの内容に変更することができる。
DelegateModelGroup のアイテムのデータには、get ()関数を使用してアクセスすることができます。この関数は、モデル・データだけでなく、グループのメンバーシップやインデックスに関する情報も返します。move() 関数と組み合わせることで、remove() を使用してビューから項目をフィルタリングしたり、setGroups() やPackage デリゲートを使用して項目を異なるビューに分類したりと、ビューのソートを実装するために使用することができます。異なるグループは、それらが分離している場合にのみ独立してソートすることができます。あるグループのアイテムを移動させると、そのアイテムが属する他のすべてのグループのアイテムも移動します。
モデルからのデータは、insert() 関数を使って DelegateModelGroup に直接データを挿入することで補足することができます。これは、ビューにモックアイテムを導入するために使用することができます。また、後で実際のモデルデータが利用可能になったときに、resolved 、プレースホルダーアイテムを導入することもできます。
また、create() 関数を使用することで、DelegateModelGroup から Delegate アイテムを直接インスタンス化することができます。これにより、DelegateModel をビューの種類に関係なく使用したり、ビューの可視領域内にあるかどうかに関係なく、インスタンス化すべき特定のアイテムを選択したりすることができます。
QML Dynamic View Ordering Tutorialも参照してください 。
プロパティの説明
count : int |
このプロパティは、グループ内のアイテムの数を保持します。
includeByDefault : bool |
このプロパティは、新しいアイテムがデフォルトでこのグループに割り当てられるかどうかを保持します。
name : string |
このプロパティは、グループの名前を保持します。
モデル内の各グループは、小文字で始まる一意の名前を持つ必要があります。
シグナル
changed(array removed, array inserted) |
このシグナルは、アイテムがグループから削除されたり、グループに挿入されたりしたときに発せられます。
removed 、inserted 配列の各オブジェクトは、挿入または削除された最初のアイテムのインデックスと、挿入または削除されたアイテムの連続数のカウントの2つの値を持ちます。
各インデックスは、挿入された項目の前にすべての削除された項目があるように、以前の変更に対して調整される。
注意: 対応するハンドラはonChanged
です。
メソッドのドキュメント
DelegateModel::model に割り当てられたモデル内のロールに対応するdata の値で、DelegateModel のindex に新しい項目を作成します。
インデックスが提供されない場合、データはモデルに追加されます。
オプションのパラメータgroups は、新しいエントリが属するグループを指定します。
DelegateModel に挿入されたデータは、後でresolve() 関数を使用してDelegateModel::model の既存のエントリとマージすることができます。これは、後で実際のデータに置き換えるプレースホルダ項目を作成するために使用できます。
グループ内のindex でインスタンス化された項目への参照を返します。
data オブジェクトを指定すると、index でinserted となり、この新しいエントリを参照する項目が返されます。オプションのgroups パラメータは、新しいエントリが属するべきグループを指定します。 未指定の場合、これはcreate() がコールされたグループと等しくなります。
createによって返されたすべての項目は、persistedItems グループに追加されます。このグループのアイテムは、どのビューからも参照されない場合、インスタンス化されたままになります。
object get(int index) |
グループ内のindex のアイテムを説明する javascript オブジェクトを返します。
返されるオブジェクトには、DelegateModel にアタッチされたデリゲートが利用できる情報と、そのアイテムのモデルが含まれています。プロパティは以下の通りです:
- modelアイテムのモデルデータ。これは、デリゲートのモデルコンテキストプロパティと同じです。
- groupsそのアイテムが属しているグループ名のリスト。このプロパティは、アイテムのメンバーシップを変更するために書き込むことができる。
- inItemsそのアイテムがitems グループに属しているかどうか。このプロパティに書き込むことで、アイテムをグループから追加または削除することができる。
- itemsIndex items グループ内のアイテムのインデックス。
- in<GroupName>そのアイテムが動的グループgroupName に属しているかどうか。このプロパティに書き込むと、項目がグループから追加または削除されます。
- <groupName>Index動的グループgroupName 内の項目のインデックス。
- isUnresolved項目がDelegateModel::model に割り当てられているモデル内のインデックスにバインドされているかどうか。項目がモデルにバインドされていない場合は true、バインドされている場合は false を返します。
to グループのfrom にあるcount を新しい位置に移動します。
注: DelegateModel は代理モデルとして動作します:underlying model が持つ順序とは異なる順序でデリゲートを保持します。その後に基礎となるモデルを変更しても、この関数で行った順序の変更は元に戻りません。
from の未解決項目をDelegateModel::model のインデックスto の項目に結合します。
未解決項目とは、DelegateModel::model インデックスから派生したのではなく、DelegateModelGroup にデータがinserted された項目である。アイテムを解決すると、対象のインデックスのアイテムは未解決のアイテムに置き換えられます。解決された項目は、そのバインドインデックスにソースモデルのデータを反映し、他の項目と同様にそのインデックスが移動すると移動します。
新しいアイテムがDelegateModelGroup onChanged() ハンドラで置き換えられると、その挿入と置き換えはアトミックな操作としてビューに伝えられ、モデルの内容が変更されていないように見せかけたり、未解決のアイテムとモデルのアイテムが隣接していない場合は、以前に未解決だったアイテムが単に移動したように見せかけたりします。
index から始まるcount アイテムのグループ・メンバーシップを変更します。アイテムは既存のグループから削除され、groups に追加されます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。