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 については、ユーザー定義の 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 で初期化されたプロパティを作成します。
void Property::setValue(const T &v)
このバインディングの値を `v` に設定します。
value()も参照してください 。
const T &Property::value()
このプロパティの値を取得します。
setValue()も参照してください 。
const T &Property::value() const
これはオーバーロードされた関数です。
特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。