C
Qul::ListModel Struct
template <typename T> struct Qul::ListModelこのクラスを継承することで、モデルをQMLで利用できるようにします。詳細...
| Header: | #include <qul/model.h> |
| Since: | Qt Quick Ultralite 1.0 |
| In QML: | ListModel |
| Inherits: | Qul::Object |
パブリック関数
パブリック変数
| Qul::Signal<void (int)> | dataChanged |
| Qul::Signal<void ()> | modelReset |
静的パブリックメンバー
| const int | StaticCount |
詳細な説明
C++ モデルを使用すると、既存の C++ データモデルやその他の複雑なデータセットを QML に公開するのに役立ちます。読み取り専用ではないモデルを作成するには、C++ でモデルを作成するしか方法がありません。QML で定義されたモデルは、実行時に変更することはできません。
独自のモデルを作成するには、まずデータモデルを記述する構造体(struct)を宣言します。そのパブリックフィールドがモデルのロールとなります。この構造体は、等価比較が可能でなければなりません。
struct AlarmData { AlarmData() : seconds(0) , running(false) {} AlarmData(int argSeconds, bool argRunning) : seconds(argSeconds) , running(argRunning) {} int seconds; bool running; }; inline bool operator==(const AlarmData &lhs, const AlarmData &rhs) { return lhs.seconds == rhs.seconds && lhs.running == rhs.running; }
あるいは、テンプレート引数として、Qt Quick Ultralite がサポートする単純な型(例:intやQul::qreal)を指定することもできます。
次に、Qul::ListModel から直接派生する構造体を宣言します。
struct AlarmModel : Qul::ListModel<AlarmData> { private: Qul::DynamicList<AlarmData> m_data; public: // Implement the ListModel interface int count() const QUL_DECL_OVERRIDE { return m_data.count(); } AlarmData data(int index) const QUL_DECL_OVERRIDE { return m_data[index]; }
注: QMLインターフェースが機能するためには、Qul::ListModel が モデル型の直近かつ最初の基底クラスでなければなりません。
この構造体には、QML アプリケーションがモデルとやり取りするために使用できる追加の関数を記述できます。
void togglePause(int index) { m_data.at(index).running = !m_data[index].running; dataChanged(index); }
modelReset およびdataChanged シグナルは、ビューの更新をトリガーするために使用されます。
modelReset シグナルは、ビューによるモデルのインスタンス化後にモデルの要素数が変更されるたびに発火する必要があります。
モデルの既存の要素が変更されるたびに、dataChanged シグナルを発行する必要があります。
動的な文字列
C++ から QML へ文字列を渡すことは、フォントコンパイラによるグリフの生成方法にいくつかの影響を及ぼします。デフォルトでは、一部の文字が QML でレンダリングされない可能性があります。詳細については、「QML での動的文字列のレンダリング」を参照してください。
関連項目: Qt Quick Ultralite におけるモデルとビュー、C++ データモデル、およびテキストのレンダリングとフォント。
メンバ関数のドキュメント
[pure virtual] int ListModel::count() const
モデル内のデータエントリの数を返します。
StaticCountも参照してください 。
[pure virtual] T ListModel::data(int index) const
指定されたindex に格納されているデータを返します。
T ListModel::get(int index) const
index にあるアイテムを返します。QML インターフェースとの互換性のために存在します。
dataも参照してください 。
メンバ変数のドキュメント
const int ListModel::StaticCount
モデル内の要素の正確な数を示す静的メンバー変数であり、Repeaterでモデルを使用するには、これをオーバーライドする必要があります。
注:この変数は 、派生クラスでstatic const int StaticCount を定義することでオーバーライドする必要があります。
関連項目: count()。
Qul::Signal<void (int)> ListModel::dataChanged
このシグナルを発行することで、指定されたindex にある項目のデータを再読み込みするようビューに指示します。
「modelReset」も参照してください 。
Qul::Signal<void ()> ListModel::modelReset
このシグナルを発行して、モデルの再読み込みが必要であることをビューに通知します。これは、行数が変更された際に発行する必要があります。
dataChangedも参照してください 。
特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。