C
Qul::Property Struct
template <typename T> struct Qul::PropertyPropertyクラスは、指定された型のプロパティを保持するために使用できます。詳細...
| 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 ライセンスの下で利用可能です。
詳細はこちら。