このページでは

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でサポートされている単純な型(例えば、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]; }

注: Qul::ListModel は、QML インターフェースが動作するために、あなたのモデル型の直接的かつ最初の基底クラスでなければなりません。

この構造体には、QMLアプリケーションがモデルと対話するために使用する追加関数を含めることができます:

void togglePause(int index)
{
    m_data.at(index).running = !m_data[index].running;
    dataChanged(index);
}

modelResetdataChanged シグナルは、ビューの更新のトリガーとして使われます。

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

モデルの正確な要素数を示す静的メンバ変数で、モデルをリピータで使用するためにはオーバーライドする必要があります。

注: この変数は、派生クラスでstatic const int StaticCount を定義することによってオーバーライドする必要があります。

count()も参照してください

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

指定されたindex にあるアイテムのデータを再読み込みするようにビューに伝えるために、このシグナルを発信します。

modelResetも参照してください

Qul::Signal<void ()> ListModel::modelReset

モデルをリロードする必要があることをビューに伝えるために、このシグナルを発行します。これは、行数が変更されたときに発せられなければなりません。

dataChangedも参照してください


詳細はこちらを参照してください。