C

属性结构体

template <typename T> struct Qul::Property

该属性类可用于持有给定类型的属性。更多...

头文件 #include <qul/property.h>
Qt Quick Ultralite 1.0

公共函数

Property(const T &value)
属性()
voidsetValue(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;
    };
    Grouped group;
};

然后它们可以像这样在 QML 中使用

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

分组是通过将属性放在一个结构体或类 S 中,然后在导出的类中有一个类型为 S 的字段来完成的。类型 S 本身不能派生自 Qul::Object。只有它的类型为 Qul::Property 的公共字段才被公开为组内的属性。

另请参阅属性分组属性

成员函数文档

Property::Property(const T &value)

value 初始化属性。

Property::Property()

创建一个持有零初始化值的属性。

void Property::setValue(const T &v)

将此绑定值设置为 v

另请参阅

const T &Property::value()

获取此属性的值。

另请参阅 setValue

const T &Property::value() const

这是一个重载函数。

在特定Qt许可下可用。
了解更多信息。