Repeater QML Type
提供されたモデルを使用して、いくつかのItemベースのコンポーネントをインスタンス化します。詳細...
| Import Statement: | import QtQuick |
| Inherits: |
プロパティ
- count : int
- delegate : Component
- delegateModelAccess : enumeration
(since 6.10) - model : var
信号
- itemAdded(int index, Item item)
- itemRemoved(int index, Item item)
方法
- Item itemAt(index)
詳細説明
リピーター型は、多数の類似したアイテムを作成するために使用されます。他のビュー・タイプと同様に、リピータはmodel とdelegate を持ちます。モデルの各エントリに対して、デリゲートはモデルからのデータでシードされたコンテキストでインスタンス化されます。通常、リピータ項目は、Row やColumn などのポジショナ型で囲まれ、リピータによって作成される複数のデリゲート項目を視覚的に配置します。
次のリピータは、Row 内にRectangle アイテムのインスタンスを 3 つ作成します:
import QtQuick Row { Repeater { model: 3 Rectangle { width: 100; height: 40 border.width: 1 color: "yellow" } } }

リピータのmodel は、サポートされているデータ・モデルのどれでもかまいません。さらに、他のビューのデリゲートと同様に、リピータのデリゲートは、デリゲートに関連するモデル・データだけでなく、リピータ内のインデックスにもアクセスできます。詳細については、delegate プロパティのドキュメントを参照してください。
リピータによってインスタンス化されたアイテムは、リピータの親の子として順番に挿入されます。挿入は、親のスタッキングリストにおけるリピーターの位置の直後から始まります。これにより、リピーターをレイアウト内で使用することができます。例えば、以下のリピーターのアイテムは、赤い四角形と青い四角形の間にスタックされています:
Row { Rectangle { width: 10; height: 20; color: "red" } Repeater { model: 10 Rectangle { width: 20; height: 20; radius: 10; color: "green" } } Rectangle { width: 10; height: 20; color: "blue" } }

注: リピータのアイテムは、それがインスタンス化するすべてのアイテムを所有します。リピータが作成したアイテムを削除したり、動的に破棄したりすると、予測できない動作になります。
リピータを使用する際の注意点
リピーター型は、リピーターが最初に作成されるときに、すべてのデリゲート項目を作成します。これは、デリゲート項目の数が多く、すべての項目を同時に表示する必要がない場合、非効率的な場合があります。このような場合は、ListView のような他のビュータイプを使用するか(ビューにスクロールされたときにのみデリゲートアイテムを作成します)、Dynamic Object Creation のメソッドを使用して、必要なときにアイテムを作成することを検討してください。
また、RepeaterはItem-ベースであり、Item-派生オブジェクトのみを繰り返すことができることに注意してください。例えば、QtObject の繰り返しには使用できません:
// bad code: Item { // Can't repeat QtObject as it doesn't derive from Item. Repeater { model: 10 QtObject {} } }
プロパティーのドキュメント
count : int [read-only]
このプロパティは、model の項目数を保持する。
count の値は、常にインスタンス化されたdelegates の数と一致するとは限りません。指定されたインデックスのデリゲートが存在するかどうかを確認するには、itemAt() を使用します。デリゲートがインスタンス化されていない場合、null を返します。
- リピータがデリゲートをインスタンス化している間(起動時、または
modelの変更)、itemAdded シグナルはデリゲートが作成されるたびに発信され、countプロパティはその後変更されます。 - リピーターが完成したビジュアル階層の一部でない場合、
countにモデル サイズが反映されますが、デリゲートは作成されません。 modelが変更されたためにリピータがデリゲートを破棄した場合、itemRemoved() シグナルがそれぞれに対して発信され、その後countプロパティが変更されます。- リピーターが視覚階層から外れると(たとえば、
parent = nullを設定すると)、デリゲートが破棄され、それぞれに対してitemRemoved() シグナルが発せられますが、countは変更されません。
itemAt()、itemAdded()、itemRemoved()も参照してください 。
delegate : Component [default]
デリゲートは、リピータによってインスタンス化された各項目を定義するテンプレートを提供します。
デリゲートは、リピータ内のデリゲートのインデックスを示す読み取り専用のindex プロパティに公開されます。たとえば、次のText デリゲートは、繰り返される各項目のインデックスを表示します:
model が文字列リストまたはオブジェクト・リストの場合、デリゲートは、文字列またはオブジェクト・データを保持する読み取り専用のmodelData プロパティにも公開されます。例えば
|
model がモデルオブジェクト(ListModel など)である場合、デリゲートは、ListView のようなビュークラスに対するデリゲートと同じように、名前付きプロパティとしてすべてのモデルのロールにアクセスすることができます。
QML データモデルも参照してください 。
delegateModelAccess : enumeration [since 6.10]
このプロパティは、デリゲートがどのようにモデルにアクセスできるかを決定します。
| 定数 | 説明 |
|---|---|
DelegateModel.ReadOnly | デリゲートがコンテキストプロパティ、model オブジェクト、または必須プロパティのいずれかを介してモデルを書き込むことを禁止します。 |
DelegateModel.ReadWrite | デリゲートがコンテキスト・プロパティ、model オブジェクト、または必須プロパティのいずれかを介してモデルを書き込むことを許可します。 |
DelegateModel.Qt5ReadWrite | デリゲートがmodel オブジェクトとコンテキスト・プロパティを使ってモデルを書き込むことを許可しますが、必須プロパティを使って書き込むことは許可しません。 |
デフォルトはDelegateModel.Qt5ReadWrite です。
このプロパティは Qt 6.10 で導入されました。
Qt Quick#モデルデータの変更の「モデルとビュー」も参照してください 。
model : var
リピーターにデータを提供するモデル。
このプロパティには、サポートされているデータ・モデルのいずれかを設定できます:
- リピータによって作成されるデリゲートの数を示す数。
- モデル (ListModel アイテムやQAbstractItemModel サブクラスなど)
- 文字列リスト
- オブジェクト・リスト
モデルのタイプは、delegate に公開されるプロパティに影響します。
データモデルも参照してください 。
シグナルのドキュメント
itemAdded(int index, Item item)
このシグナルは、リピータにアイテムが追加されたときに発行されます。index パラメータは、アイテムがリピータ内に挿入されたインデックスを保持し、item パラメータは、追加されたItem を保持します。
注意: 対応するハンドラはonItemAdded です。
itemRemoved(int index, Item item)
このシグナルは、アイテムがリピータから削除されたときに発行されます。index パラメータはアイテムがリピータから削除されたインデックスを保持し、item パラメータは削除されたItem を保持します。
このリピータによって作成された場合は、item への参照を保持しないでください。このような場合、シグナルが処理された直後に削除されるからです。
注意: 対応するハンドラはonItemRemoved です。
メソッドのドキュメント
Item itemAt(index)
指定されたindex に作成されたItem を返し、index にアイテムが存在しない場合はnull を返す。
© 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.

