このページでは

DelegateModelGroup QML Type

フィルタリングされた視覚データ項目のセットをカプセル化します。詳細...

Import Statement: import QtQml.Models

プロパティ

シグナル

  • changed(array removed, array inserted)

方法

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

詳細説明

DelegateModelGroup 型は、DelegateModel のデリゲート項目のモデルデータにアクセスし、これらのデリゲート項目を並べ替えたりフィルタリングしたりするための手段を提供します。

DelegateModel 内のインスタンス化可能なデリゲート項目の初期セットは、そのitems グループによって表され、通常はDelegateModel::model に割り当てられたモデルの内容を直接反映しています。このセットは、その DelegateModelGroup のname をDelegateModel::filterOnGroup プロパティに割り当てることで、DelegateModel::groups の他の任意のメンバーの内容に変更することができます。

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

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

また、create() 関数を使用することで、DelegateModelGroup から直接デリゲート項目をインスタンス化することも可能です。これにより、対応するビュータイプがなくてもDelegateModel を使用したり、現在ビューの可視領域内にあるかどうかにかかわらず、インスタンス化すべき特定の項目を厳選したりすることが可能になります。

「QML 動的ビュー順序設定チュートリアル」も参照してください 。

プロパティのドキュメント

count : int [read-only]

このプロパティには、グループ内の項目の数が格納されます。

includeByDefault : bool

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

name : string

このプロパティには、グループの名前が格納されます。

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

Signal ドキュメント

changed(array removed, array inserted)

このシグナルは、グループから項目が削除されたり、グループに項目が挿入されたりした際に発生します。

removed およびinserted 配列内の各オブジェクトには、挿入または削除された最初の項目のインデックスと、連続して挿入または削除された項目の数という2 つの値があります。

各インデックスは、削除された項目が挿入された項目よりも前に来るよう、以前の変更に合わせて調整されます。

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

メソッドのドキュメント

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

index から始まる「count 」のアイテムを、groups に追加します。

var create(int index)

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

var create(jsdict data, array groups = undefined)

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

data オブジェクトが指定された場合、それはindex にある `inserted ` となり、この新しいエントリを参照するアイテムが返されます。オプションの `groups ` パラメータは、新しいエントリが属すべきグループを指定します。指定がない場合、これは `create` が呼び出されたグループと同じになります。

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

var get(int index)

グループ内のindex にあるアイテムを記述する JavaScript オブジェクトを返します。

返されるオブジェクトには、DelegateModel からデリゲートが利用可能な情報に加え、そのアイテムのモデルも含まれます。このオブジェクトには以下のプロパティがあります:

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

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

void insert(jsdict data, var groups = undefined)

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

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

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

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

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

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

注: DelegateModel は プロキシモデルとして機能します。つまり、underlying model が保持している順序とは異なる順序でデリゲートを保持します。この関数を使用して行った並べ替えは、その後、基になるモデルに変更が加えられても元に戻りません。

void remove(int index, int count)

index から始まる「count 」の項目をグループから削除します。

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

groups から、index 以降にある「count 」の項目を削除します。

void resolve(int from, int to)

from にある未解決の項目を、DelegateModel::model のインデックスto にある項目にバインドします。

未解決のアイテムとは、DelegateModel::model のインデックスから派生されたものではなく、inserted を通じてDelegateModelGroup にデータが登録されたエントリのことです。アイテムを解決すると、ターゲットインデックスにあるアイテムが未解決のアイテムに置き換えられます。解決されたアイテムは、バインドされたインデックスでソースモデルのデータを反映し、他のアイテムと同様に、そのインデックスが移動すると一緒に移動します。

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

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

index から始まるcount の項目のグループ所属を変更します。これらの項目は、現在のグループから削除され、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.