C
ListView QML Type
モデルが提供する項目のリスト表示を行います。詳細...
| Import Statement: | import QtQuick |
| Since: | Qt Quick Ultralite 1.0 |
| Inherits: |
プロパティ
- count : int
(since Qt Quick Ultralite 2.9) - currentIndex : int
(since Qt Quick Ultralite 2.9) - delegate : Component
- highlight : Component
(since Qt Quick Ultralite 2.9) - model : model
- orientation : Qt::Orientation
- spacing : real
方法
- int indexAt(real x, real y)
(since Qt Quick Ultralite 2.9) - var itemAtIndex(int index)
(since Qt Quick Ultralite 1.6) - void positionViewAtIndex(int index, PositionMode mode)
(since Qt Quick Ultralite 2.9)
詳細な説明
ListViewは、ListModel などの組み込みQML型から作成されたモデルからのデータを表示します。
ListViewには、表示するデータを定義するモデルと、データの表示方法を定義するデリゲートがあります。ListView内の項目は、水平方向または垂直方向に配置されます。ListViewはFlickable を継承しているため、本質的にフリック操作が可能です。
注: Qt Quick Ultraliteでは 、すべてのデリゲートは同じサイズでなければならず、そのサイズは明示的に指定する必要があります。
使用例
次の例は、ListViewで使用される単純なリストモデルの定義を示しています。ここでは、ListViewがそのデリゲート用にTextアイテムを作成しています。
Item { ListView { width: 180; height: 300 model: ListModel { ListElement { name: "Bill Smith" number: "555 3264" } ListElement { name: "John Brown" number: "555 8426" } ListElement { name: "Sam Wise" number: "555 0473" } } delegate: Text { width: 180 height: 30 text: model.name + ": " + model.number } } }
ビューは、モデル内の各項目に対して新しい Text コンポーネントを作成します。デリゲートがモデルの名前および数値データに直接アクセスできる点に注目してください。

改良例
以下に、改良されたリストビューを示します。デリゲートの外観が改善され、独立した contactDelegate コンポーネント内に移動されています。
Item { Rectangle { width: 360; height: 200 Component { id: contactDelegate Item { width: 360; height: 60 Column { Text { text: 'Name: ' + model.name } Text { text: 'Number: ' + model.number } } } } ListView { anchors.fill: parent model: ListModel { ListElement { name: "Bill Smith" number: "555 3264" } ListElement { name: "John Brown" number: "555 8426" } ListElement { name: "Sam Wise" number: "555 0473" } } delegate: contactDelegate } } }
デリゲートは必要に応じてインスタンス化され、いつでも破棄される可能性があります。デリゲートはビュー自体ではなく、ListViewのcontentItemの子として配置されます。デリゲート内に状態を保存してはなりません。

レイアウトの例
ListView 内の項目のレイアウトは、orientation プロパティを使用して制御できます。このプロパティは、項目が水平方向か垂直方向に配置されるかを制御します。この値は Qt.Horizontal または Qt.Vertical のいずれかになります。
Item { Rectangle { width: 360; height: 200 Component { id: contactDelegate Item { width: 120; height: 200 Column { Text { text: model.name } Text { text: model.surname } Text { text: "Age: " + model.age } } } } ListView { anchors.fill: parent orientation: Qt.Horizontal model: ListModel { ListElement { name: "Bill" surname: "Smith" age: "30" } ListElement { name: "John" surname: "Brown" age: "56" } ListElement { name: "Sam" surname: "Wise" age: "42" } } delegate: contactDelegate } } }

「ListView QML タイプ」および「モデル・ビュー・デリゲート(MVD)パターン」も参照してください 。
プロパティのドキュメント
count : int [since Qt Quick Ultralite 2.9]
このプロパティは、モデル内の項目の数を保持します。
このプロパティは、Qt Quick Ultralite 2.9で導入されました。
currentIndex : int [since Qt Quick Ultralite 2.9]
currentIndex プロパティには、現在の項目のインデックスが格納されます。これを -1 に設定すると、ハイライトが解除されます。
このプロパティは、Qt Quick Ultralite 2.9 で導入されました。
delegate : Component
デリゲートは、リストビューによってインスタンス化される各項目を定義するテンプレートを提供します。
highlight : Component [since Qt Quick Ultralite 2.9]
このプロパティには、ハイライトとして使用するコンポーネントが格納されます。
各ListView には、ハイライトコンポーネントのインスタンスが渡され、ListView によって管理され、現在の項目をハイライト表示します。
注: Qt Quick Ultralite のListView は 、Qt Quick と比べて、要素のスタック順が異なります。Qt Quick では、デリゲートのスタック順は 1、ハイライトのスタック順は 0 です。一方、Qt Quick Ultralite では、デリゲートのスタック順の値として0 を使用し、ハイライトには-1 を使用します。 これにより、デフォルト(0)以外の z 値には追加のストレージが必要となるため、余分なストレージを確保する必要がなくなります。可能な限りデフォルトのスタック順序値を維持することで、Qt Quick Ultralite のListView はストレージの使用を最適化しています。
このプロパティは、Qt Quick Ultralite 2.9で導入されました。
model : model
このプロパティには、リストにデータを供給するモデルが格納されています。
モデルは、ビュー内のアイテムを作成するために使用されるデータのセットを提供します。
Qt Quick Ultraliteの「モデルとビュー」も参照してください 。
orientation : Qt::Orientation
このプロパティは、リストの向きを保持します。
spacing : real
このプロパティは、項目間の間隔を指定します。
デフォルト値は 0 です。
メソッドのドキュメント
[since Qt Quick Ultralite 2.9] int indexAt(real x, real y)
コンテンツ座標において、点x 、y を含む表示中のアイテムのインデックスを返します。指定された点にアイテムが存在しない場合、またはアイテムが表示されていない場合、この関数は-1 を返します。
また、アイテムがListView 内に存在するかどうかにかかわらず、アイテムが表示領域外にある場合、この関数は-1 を返します。
このメソッドは、Qt Quick Ultralite 2.9 で導入されました。
[since Qt Quick Ultralite 1.6] var itemAtIndex(int index)
index にあるアイテムを返します。そのインデックスに対応するアイテムが存在しない場合(例えば、まだ作成されていない場合や、画面外へスクロールされてキャッシュから削除された場合など)、null アイテムが返されます。
このメソッドは、Qt Quick Ultralite 1.6 で導入されました。
[since Qt Quick Ultralite 2.9] void positionViewAtIndex(int index, PositionMode mode)
ListView 内のビューポートを制御できます。これは、以下のいずれかのmode に基づいてindex を設定します:
| 定数 | 説明 |
|---|---|
ListView.Beginning | アイテムをビューの上部(横向きの場合は左側)に配置します。 |
ListView.Center | アイテムをビューの中央に配置します。 |
ListView.End | アイテムをビューの下部(横向きの場合は右側)に配置します。 |
ListView.Visible | アイテムをビュー内に配置します。アイテムが部分的にしか表示されていない場合、この設定は効果を持ちません。 |
ListView.Contain | アイテム全体をビュー内に配置します。アイテムがビューよりも大きい場合、ビューの上部(横向きの場合は左側)に配置されます。 |
index でビューを配置した際に、ビューの先頭または末尾に空きスペースが生じる場合、ビューは境界に配置されます。
注: Qt Quick Ultralite では、highlightRangeMode およびsnapMode のいずれもまだサポートされていないため、ListViewの .SnapPosition モードは 効果を発揮しません。
このメソッドは、Qt Quick Ultralite 2.9 で導入されました。
特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。