📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| (同じ利用者による、間の1版が非表示) | |||
| 399行目: | 399行目: | ||
加えて、モデルはQt C++で作成することができ、そのモデルを<code>QQmlEngine</code>クラスを使用してQMLコンポーネントから利用することもできる。<br> | 加えて、モデルはQt C++で作成することができ、そのモデルを<code>QQmlEngine</code>クラスを使用してQMLコンポーネントから利用することもできる。<br> | ||
<br> | <br> | ||
モデルの作成については、[[QMLの基礎 - モデルの作成]]や[[QMLの基礎 - | モデルの作成については、[[QMLの基礎 - モデルの作成]]や[[QMLの基礎 - カスタムQMLタイプ]]を参照すること。<br> | ||
<br> | <br> | ||
モデルからアイテムを配置する場合は、<code>Repeater</code>を使用することで実現できる。<br> | モデルからアイテムを配置する場合は、<code>Repeater</code>を使用することで実現できる。<br> | ||
| 648行目: | 648行目: | ||
また、<code>Repeater</code>が作成するアイテムのテンプレートとして、デリゲートを使用することもできる。<br> | また、<code>Repeater</code>が作成するアイテムのテンプレートとして、デリゲートを使用することもできる。<br> | ||
これは、<code>delegate</code>プロパティで指定する。<br> | これは、<code>delegate</code>プロパティで指定する。<br> | ||
<br><br> | |||
== モデルデータの変更 == | |||
モデルのデータを変更するには、モデルのプロパティに最新の値を割り当てる。<br> | |||
QMLの<code>ListModel</code>はデフォルトで編集可能であるが、C++のモデルは<code>setData</code>メソッドを実装しないと編集できない。<br> | |||
なお、整数やJavaScriptの配列モデルは、読み取り専用である。<br> | |||
<br> | |||
以下の例では、EditableModelは<code>QAbstractItemModel</code>を継承したC++モデルで<code>setData</code>メソッドを実装しており、かつ、QML型として登録されている場合、<br> | |||
データは、以下のようにモデルに書き込まれまる。<br> | |||
<syntaxhighlight lang="qml"> | |||
ListView { | |||
anchors.fill: parent | |||
model: EditableModel {} | |||
delegate: TextEdit { | |||
width: ListView.view.width | |||
height: 30 | |||
text: model.edit | |||
Keys.onReturnPressed: { | |||
model.edit = text | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<u>※注意</u><br> | |||
<u><code>edit</code>ロールは、<code>Qt::EditRole</code>と同じである。組み込みのロール名については、[https://doc.qt.io/qt-5/qabstractitemmodel.html#roleNames roleNames()]を参照すること。</u><br> | |||
<u>実際のモデルでは、通常、カスタムロールを登録する。</u><br> | |||
<br> | |||
モデルのロールが<code>required <プロパティ名></code>にバインドされている場合、そのプロパティに割り当ててもモデルは変更されない。<br> | |||
代わりに、モデルへのバインドが解除される。(他のプロパティへの割り当てが既存のバインドを解除するのと同様である)<br> | |||
<br> | |||
必須プロパティを使用してモデルデータを変更する場合、<code>model</code>も必須プロパティにして<code>model.propertyName</code>に割り当てる。<br> | |||
<br> | |||
詳細は、[https://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html#changing-model-data Using C++ Models with Qt Quick Views]を参照すること。<br> | |||
<br><br> | |||
== トランジションの使用 == | |||
トランジションは、ポジショナに追加、ポジショナ内での移動、ポジショナから削除されたアイテムをアニメーション化するために使用する。<br> | |||
<br> | |||
アイテムを追加するトランジションは、ポジショナの一部として作成されたアイテムや、ポジショナの子になるために再配置されたアイテムに適用される。<br> | |||
アイテムを削除するためのトランジションは、ポジショナ内のアイテムが削除された場合や、ポジショナから削除されてドキュメント内に新しい親が与えられた場合に適用される。<br> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>アイテムの不透明度をゼロに変更しても、ポジショナからアイテムが消えることはない。</u><br> | |||
<u>これらのアイテムは、<code>visible</code>プロパティを変更することで、削除および追加することができる。</u><br> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Qt]] | [[カテゴリ:Qt]] | ||