このページでは

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)
void setValue(const T &v)
const T &value()
const T &value() const

詳細説明

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

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 で初期化されたプロパティを作成します。

void Property::setValue(const T &v)

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

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

const T &Property::value()

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

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

const T &Property::value() const

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

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