このページでは

C

Qul::Property Struct

template <typename T> struct Qul::Property

Property クラスは、指定された型のプロパティを保持するために使用できます。詳細...

Header: #include <qul/property.h>
Since: Qt Quick Ultralite 1.0

パブリック関数

Property()
Property(const T &value)
Property(const Qul::Property<T> &)
void setValue(const T &v)
const T &value()
const T &value() const
Qul::Property<T> &operator=(const Qul::Property<T> &)

詳細な説明

このクラスを、C++で定義するオブジェクトのパブリックメンバーとして使用します。これにより、QMLにおいてそのオブジェクトのプロパティとして公開されます。クラスのテンプレートパラメータはC++の型を定義し、対応するQMLの型にマッピングされます。組み込みの比較演算子を持たないプロパティ型 T については、ユーザー定義の operator== を指定する必要があります。

struct MyData : public Qul::Object
{
    Qul::Property<int> val;
    void update(int x)
    {
        // can get and set property values from C++
        val.setValue(x);
    }
};

C++で定義されたプロパティは、QMLバインディングで使用できます。

Item {
    Item {
        // can bind QML property to exported property
        x: mydata_x.val
        color: "red"
        width: 50
        height: 50
    }
    MyData {
        id: mydata_x
        val: 100
    }
    MyData {
        id: mydata_width
        // can bind exported property
        val: parent.width
    }
    Component.onCompleted: {
        mydata_x.update(200);
        console.log(mydata_width.val);
    }
}

ご覧のとおり、QMLバインディングをC++で定義されたプロパティに割り当てることができます。バインディングで使用されるプロパティの値が変更されると、そのプロパティの値も自動的に更新されます。また、QMLでバインディングを定義する際のソースとしても使用できます。

プロパティのグループ化

プロパティは次のようにグループ化できます:

struct MyObject : public Qul::Object
{
    struct Grouped
    {
        Qul::Property<int> val1;
        Qul::Property<int> val2;
        Qul::ListProperty<int> list1;
    };
    Grouped group;
};

そうすることで、QMLでは次のように使用できます:

Item {
    MyObject {
        group.val1: 42
        group.val2: 43
    }
}

グループ化は、プロパティを構造体またはクラス S の中に配置し、エクスポートされるクラス内に型 S のフィールドを設けることで行われます。型 S 自体は `Qul::Object` から派生してはなりません。グループ内のプロパティとして公開されるのは、型 `Qul::Property ` のパブリックフィールドのみです。

プロパティ」および「グループ化されたプロパティも参照してください

メンバ関数のドキュメント

Property::Property()

ゼロで初期化された値を保持するプロパティを作成します。

[explicit] Property::Property(const T &value)

value で初期化されたプロパティを作成します。

[delete] Property::Property(const Qul::Property<T> &)

Property のインスタンスをコピーして生成します。この関数は削除されています。

void Property::setValue(const T &v)

このバインディングの値を `v` に設定します。

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

const T &Property::value()

このプロパティの値を取得します。

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

const T &Property::value() const

これはオーバーロードされた関数です。

[delete] Qul::Property<T> &Property::operator=(const Qul::Property<T> &)

other をこのProperty インスタンスにコピー代入します。この関数は削除されました。

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。