DelegateModel QML Type
モデルとデリゲートをカプセル化します。詳細...
Import Statement: | import QtQml.Models |
プロパティ
- count : int
- delegate : Component
- filterOnGroup : string
- groups : list<DelegateModelGroup>
- items : DelegateModelGroup
- model : model
- parts : object
- persistedItems : DelegateModelGroup
- rootIndex : QModelIndex
Attached プロパティ
- groups : stringlist
- inItems : bool
- inPersistedItems : bool
- isUnresolved : bool
- itemsIndex : int
- model : model
- persistedItemsIndex : int
メソッド
- QModelIndex modelIndex(int index)
- QModelIndex parentModelIndex()
詳細な説明
DelegateModel 型は、モデルと、モデル内のアイテムに対してインスタンス化されるデリゲートをカプセル化します。
通常、DelegateModel を作成する必要はない。しかし、QAbstractItemModel のサブクラスがモデルとして使用されている場合、modelIndex を操作したりアクセスしたりするのに便利です。また、DelegateModel は、Package と共に、複数のビューにデリゲートを提供するために使用され、DelegateModelGroup と共に、デリゲートアイテムのソートやフィルタリングのために使用されます。
DelegateModel は一次元モデルのみをサポートしており、テーブルモデルを DelegateModel に割り当て、TableView に割り当てると、一つの列のみが表示されます。
以下の例では、ListView で DelegateModel を使用しています。
import QtQuick import QtQml.Models Rectangle { width: 200; height: 100 DelegateModel { id: visualModel model: ListModel { ListElement { name: "Apple" } ListElement { name: "Orange" } } delegate: Rectangle { height: 25 width: 100 Text { text: "Name: " + name} } } ListView { anchors.fill: parent model: visualModel } }
プロパティの記述
count : int |
delegate : Component |
デリゲートは、ビューによってインスタンス化された各項目を定義するテンプレートを提供します。インデックスは、アクセス可能なindex
プロパティとして公開されます。データモデルの種類に応じて、モデルのプロパティも利用可能です。
filterOnGroup : string |
このプロパティは、デリゲートモデルをフィルタリングするために使用されるグループの名前を保持します。
このグループに属する項目のみがビューに表示されます。
デフォルトでは、これはitems グループです。
groups : list<DelegateModelGroup> |
このプロパティは、デリゲートモデルのグループ定義を保持します。
グループは、デリゲートモデル内のアイテムのサブセットを定義し、モデルをフィルタリングするために使用することができます。
DelegateModel で定義されたすべてのグループに対して、2つの付属の擬似プロパティが各デリゲート項目に追加されます。最初のDelegateModel.inGroupNameは、そのアイテムがグループに属しているかどうかを保持し、2 番目のDelegateModel.groupNameIndexは、そのグループ内のアイテムのインデックスを保持します。
以下の例では、モデル内の項目を選択するためにグループを使用しています。
import QtQuick import QtQml.Models Rectangle { width: 200; height: 100 DelegateModel { id: visualModel model: ListModel { ListElement { name: "Apple" } ListElement { name: "Orange" } } groups: [ DelegateModelGroup { name: "selected" } ] delegate: Rectangle { id: item height: 25 width: 200 Text { text: { var text = "Name: " + name if (item.DelegateModel.inSelected) text += " (" + item.DelegateModel.selectedIndex + ")" return text; } } MouseArea { anchors.fill: parent onClicked: item.DelegateModel.inSelected = !item.DelegateModel.inSelected } } } ListView { anchors.fill: parent model: visualModel } }
警告 通常のアタッチド・プロパティとは対照的に、これらのプロパティは宣言的な方法で設定することはできません。以下のようにするとエラーになります:
delegate: Rectangle { DelegateModel.inSelected: true }
items : DelegateModelGroup |
このプロパティは、すべての新しいアイテムが追加されるデフォルトグループを保持します。
model : model |
このプロパティは、DelegateModel のデータを提供するモデルを保持します。
モデルは、ビューの項目を作成するために使用されるデータのセットを提供します。大きなデータセットや動的なデータセットの場合、モデルは通常 C++ モデル・オブジェクトによって提供されます。C++モデル・オブジェクトは、QAbstractItemModel のサブクラスか、単純なリストでなければなりません。
モデルは、例えばListModel を使ってQMLで直接作成することもできます。
データ・モデル」も参照してください 。
parts : object |
parts プロパティは、指定されたパートからデリゲートを作成するDelegateModel を選択します。これはPackage タイプと組み合わせて使用します。
例えば、以下のコードは、Package からlistという名前のデリゲートを作成するモデルを選択します:
DelegateModel { id: visualModel delegate: Package { Item { Package.name: "list" } } model: myModel } ListView { width: 200; height:200 model: visualModel.parts.list }
Packageも参照して ください。
persistedItems : DelegateModelGroup |
このプロパティは、デリゲートモデルの永続化アイテムグループを保持します。
このグループのアイテムは、ビューによって解放されても破棄されません。
DelegateModelinPersistedItems プロパティを false に設定することで、アイテムを persistedItems グループから削除することができます。その時、アイテムがビューによって参照されていなければ、破棄されます。このグループに項目を追加しても、新しいインスタンスは作成されません。
QtQml.Models::DelegateModelGroup::create() 関数によって返されたアイテムは、自動的にこのグループに追加されます。
rootIndex : QModelIndex |
QAbstractItemModel rootIndex
、 の任意のノードの子ノードをこのモデルから提供することができます。QAbstractItemModel
このプロパティは、QAbstractItemModel 型のモデルのうち、階層的なモデル(例えば、ツリーモデル)にのみ影響します。
例えば、簡単な対話型ファイルシステム・ブラウザを示します。ディレクトリ名がクリックされると、ビューのrootIndex
がクリックされたディレクトリのQModelIndex ノードに設定され、新しいディレクトリの内容が表示されるようにビューが更新されます。
main.cpp
:
int main(int argc, char ** argv) { QApplication app(argc, argv); QQuickView view; QFileSystemModel model; view.rootContext()->setContextProperty("fileSystemModel", &model); view.setSource(QUrl::fromLocalFile("view.qml")); view.show(); return app.exec(); }
view.qml
:
import QtQuick import QtQml.Models ListView { id: view width: 300 height: 400 model: DelegateModel { model: fileSystemModel delegate: Rectangle { width: 200; height: 25 Text { text: filePath } MouseArea { anchors.fill: parent onClicked: { if (model.hasModelChildren) view.model.rootIndex = view.model.modelIndex(index) } } } } }
model がQAbstractItemModel のサブクラスである場合、デリゲートは、デリゲートのモデルアイテムに子ノードがあるかどうかを示すhasModelChildren
プロパティ(オプションでmodel.prefix で修飾)を参照することもできます。
modelIndex() およびparentModelIndex()も参照してください 。
Attached Property ドキュメント
DelegateModel.groups : stringlist |
この Attached プロパティは、そのアイテムが属する DelegateModelGroups の名前を保持します。
このプロパティは、デリゲートの各インスタンスにアタッチされます。
DelegateModel.inItems : bool |
この Attached プロパティは、アイテムがデフォルトのitems DelegateModelGroup に属しているかどうかを保持します。
このプロパティを変更すると、アイテム グループにアイテムが追加または削除されます。
このプロパティは、デリゲートの各インスタンスにアタッチされます。
DelegateModel.inPersistedItems : bool |
このアタッチされたプロパティは、アイテムがpersistedItems DelegateModelGroup に属しているかどうかを保持します。
このプロパティを変更すると、アイテム グループからアイテムが追加または削除されます。persistedItems グループからアイテムを削除すると、モデルによって参照されていない場合、現在のインスタンスが破壊されるので、注意して変更してください。
このプロパティはデリゲートの各インスタンスにアタッチされます。
DelegateModel.isUnresolved : bool |
このアタッチされたプロパティは、ビジュアルアイテムがデータモデルインデックスにバインドされているかどうかを示します。アイテムがモデルにバインドされていない場合はtrueを返し、バインドされている場合はfalseを返します。
未解決のアイテムは、DelegateModelGroup::resolve ()関数を使用してデータモデルにバインドすることができます。
これは、デリゲートの各インスタンスにアタッチされます。
DelegateModel.itemsIndex : int |
このアタッチされたプロパティは、デフォルトのitems DelegateModelGroup における項目のインデックスを保持します。
デリゲートの各インスタンスにアタッチされます。
DelegateModel.model : model |
このアタッチされたプロパティは、このデリゲートのインスタンスが属するデータモデルを保持します。
これは、デリゲートの各インスタンスにアタッチされます。
DelegateModel.persistedItemsIndex : int |
このアタッチされたプロパティは、persistedItems DelegateModelGroup の項目のインデックスを保持します。
これは、デリゲートの各インスタンスにアタッチされます。
メソッド・ドキュメント
QModelIndex modelIndex(int index) |
QAbstractItemModel QMLはリストデータのみを扱うのに対して、この関数は階層的なツリーデータを提供します。この関数はQMLでツリーモデルを使用する際に役立ちます。
指定されたindex に対するQModelIndex を返します。この値はrootIndex に代入することができます。
rootIndexも参照してください 。
QModelIndex parentModelIndex() |
QAbstractItemModel QMLはリストデータのみを扱うのに対して、この関数はデータの階層的なツリー を提供します。この関数はQMLでツリーモデルを使用する際に役立ちます。
現在のrootIndex の親のQModelIndex を返す。この値はrootIndex に代入することができます。
rootIndexも参照してください 。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。