このページでは

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

パブリック関数

virtual int count() const = 0
virtual T data(int index) const = 0
T get(int index) const

パブリック変数

Qul::Signal<void (int)> dataChanged
Qul::Signal<void ()> modelReset

静的パブリックメンバー

const int StaticCount

詳細な説明

C++ モデルを使用すると、既存の C++ データモデルやその他の複雑なデータセットを QML に公開するのに役立ちます。読み取り専用ではないモデルを作成するには、C++ でモデルを作成するしかありません。QML で定義されたモデルは、実行時に変更することはできません。

独自のモデルを作成するには、まずデータモデルを記述する構造体を宣言します。そのパブリックフィールドがモデルのロールになります。この構造体は、等価比較が可能でなければなりません。

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 でサポートされている単純な型(例:intQul::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ライセンスの下で利用可能です。
詳細はこちらをご覧ください。