QQmlProperty 类

QQmlProperty 类封装了从 QML 创建的对象属性访问。 更多...

头文件 #include <QQmlProperty>
CMakefind_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmakeQT += qml

公共类型

枚举PropertyTypeCategory { InvalidCategory, List, Object, Normal }
枚举Type { Invalid, Property, SignalProperty }

公共函数

QQmlProperty()
QQmlProperty(QObject *obj)
QQmlProperty(QObject *obj, QQmlContext *ctxt)
QQmlProperty(QObject *obj, QQmlEngine *engine)
QQmlProperty(QObject *obj, const QString &name)
QQmlProperty(QObject *obj, const QString &name, QQmlContext *ctxt)
QQmlProperty(QObject *obj, const QString &name, QQmlEngine *engine)
QQmlProperty(const QQmlProperty &other)
boolconnectNotifySignal(QObject *dest, const char *slot) const
boolconnectNotifySignal(QObject *dest, int method) const
boolhasNotifySignal() const
intindex() const
boolisDesignable() const
boolisProperty() const
boolisResettable() const
boolisSignalProperty() const
boolisValid() const
boolisWritable() const
QMetaMethodmethod() const
QStringname() const
boolneedsNotifySignal() const
QObject *object() const
QMetaPropertyproperty() const
QMetaTypepropertyMetaType() const
intpropertyType() const
QQmlProperty::PropertyTypeCategorypropertyTypeCategory() const
const char *propertyTypeName() const
QVariant读取() const
bool重置() const
QQmlProperty::类型类型() const
bool写入(const QVariant &value) const
QQmlProperty &赋值运算符(const QQmlProperty &other)
bool相等运算符(const QQmlProperty &other) const

静态公有成员

QVariant读取(const QObject *object, const QString &name)
QVariant读取(const QObject *object, const QString &name, QQmlContext *ctxt)
QVariant读取(const QObject *object, const QString &name, QQmlEngine *engine)
bool写入(QObject *object, const QString &name, const QVariant &value)
bool写入(QObject *object, const QString &name, const QVariant &value, QQmlContext *ctxt)
bool写入(QObject *object, const QString &name, const QVariant &value, QQmlEngine *engine)

详细描述

由于QML使用Qt的元类型系统,因此所有现有的QMetaObject类都可以用来检索和与QML创建的对象交互。然而,一些QML提供的新功能(如类型安全和附加属性)最容易被QQmlProperty类简化,从而更容易使用。

与表示类类型上属性的QMetaProperty不同,QQmlProperty封装了特定对象实例上的属性。为了读取属性值,程序员创建一个QQmlProperty实例,并调用read()方法。同样,要写入属性值,使用write()方法。

例如,对于以下QML代码

// MyItem.qml
import QtQuick 2.0

Text { text: "A bit of text" }

可以使用QQmlProperty访问Text对象的属性,如下所示

#include <QQmlProperty>
#include <QGraphicsObject>

...

QQuickView view(QUrl::fromLocalFile("MyItem.qml"));
QQmlProperty property(view.rootObject(), "font.pixelSize");
qWarning() << "Current pixel size:" << property.read().toInt();
property.write(24);
qWarning() << "Pixel size should now be 24:" << property.read().toInt();

成员类型文档

枚举QQmlProperty::PropertyTypeCategory

此枚举指定了QML属性的分类。

常量描述
QQmlProperty::InvalidCategory0属性无效或为信号属性。
QQmlProperty::List1该属性是一个QQmlListProperty列表属性
QQmlProperty::Object2该属性是QObject派生类型指针
QQmlProperty::Normal3该属性是正常值属性。

枚举QQmlProperty::Type

此枚举指定QML属性的类型。

常量描述
QQmlProperty::Invalid0属性无效。
QQmlProperty::Property1该属性是常规Qt属性。
QQmlProperty::SignalProperty2该属性是信号属性。

成员函数文档

QQmlProperty::QQmlProperty()

创建一个无效的QQmlProperty。

QQmlProperty::QQmlProperty(QObject *obj)

obj的默认属性创建QQmlProperty。如果没有默认属性,将创建一个无效的QQmlProperty。

QQmlProperty::QQmlProperty(QObject *obj, QQmlContext *ctxt)

使用上下文ctxtobj的默认属性创建QQmlProperty。如果没有默认属性,将创建一个无效的QQmlProperty。

QQmlProperty::QQmlProperty(QObject *obj, QQmlEngine *engine)

使用由 engine 提供的 QML 组件实例化环境为 obj 的默认属性创建 QQmlProperty。如果没有默认属性,将创建一个无效的 QQmlProperty。

QQmlProperty::QQmlProperty(QObject *obj, const QString &name)

obj 的属性 name 创建 QQmlProperty。

QQmlProperty::QQmlProperty(QObject *obj, const QString &name, QQmlContext *ctxt)

使用 ctxt 上下文obj 的属性 name 创建 QQmlProperty。

未提供上下文创建 QQmlProperty 将导致一些属性(例如附加属性)不可访问。

QQmlProperty::QQmlProperty(QObject *obj, const QString &name, QQmlEngine *engine)

使用由 engine 提供的 QML 组件实例化环境为 obj 的属性 name 创建 QQmlProperty。

QQmlProperty::QQmlProperty(const QQmlProperty &other)

创建 other 的副本。

bool QQmlProperty::connectNotifySignal(QObject *dest, const char *slot) const

将属性的更改通知信号连接到 dest 对象的指定 slot 并返回 true。如果没有此元属性代表常规 Qt 属性或没有更改通知信号,或 dest 对象没有指定的 slot,则返回 false。

注意: 应使用 SLOT() 宏传递 slot 以正确识别。

bool QQmlProperty::connectNotifySignal(QObject *dest, int method) const

将属性的更改通知信号连接到 dest 对象的指定 method 并返回 true。如果没有此元属性代表常规 Qt 属性或没有更改通知信号,或 dest 对象没有指定的 method,则返回 false。

bool QQmlProperty::hasNotifySignal() const

如果属性有更改通知信号,则返回 true,否则返回 false。

int QQmlProperty::index() const

返回属性的 Qt 元对象索引。

bool QQmlProperty::isDesignable() const

如果属性可设计,则返回true,否则返回false。

bool QQmlProperty::isProperty() const

如果此QQmlProperty代表常规Qt属性,则返回true。

bool QQmlProperty::isResettable() const

如果属性可重置,则返回true,否则返回false。

bool QQmlProperty::isSignalProperty() const

如果此QQmlProperty代表QML信号属性,则返回true。

bool QQmlProperty::isValid() const

如果QQmlProperty引用的属性有效,则返回true,否则返回false。

bool QQmlProperty::isWritable() const

如果属性可写,则返回true,否则返回false。

QMetaMethod QQmlProperty::method() const

如果这是SignalProperty,则返回此属性的QMetaMethod,否则返回一个无效的QMetaMethod

QString QQmlProperty::name() const

返回此QML属性的名字。

注意:属性名获取器函数。

bool QQmlProperty::needsNotifySignal() const

如果属性需要更改通知信号以便绑定保持最新状态,则返回true,否则返回false。

某些属性,如附加属性或那些值始终不变的属性,不需要更改通知器。

QObject *QQmlProperty::object() const

返回QQmlPropertyQObject

注意:属性对象的获取器函数。

QMetaProperty QQmlProperty::property() const

返回与此QML属性相关联的Qt属性

QMetaType QQmlProperty::propertyMetaType() const

返回属性的元类型。

另请参阅propertyType

int QQmlProperty::propertyType() const

返回属性的元类型标识符,如果没有元类型则返回QMetaType::UnknownType

另请参阅propertyMetaType

QQmlProperty::PropertyTypeCategory QQmlProperty::propertyTypeCategory() const

返回属性类别。

const char *QQmlProperty::propertyTypeName() const

返回属性的类型名称,如果没有类型名称则返回0。

QVariant QQmlProperty::read() const

返回属性值。

[静态] QVariant QQmlProperty::read(const QObject *object, const QString &name)

返回对象object的属性名称name的值。此方法等价于

QQmlProperty p(object, name);
p.read();

[静态] QVariant QQmlProperty::read(const QObject *object, const QString &name, QQmlContext *ctxt)

使用上下文ctxt返回对象object的属性名称name的值。此方法等价于

QQmlProperty p(object, name, context);
p.read();

[静态] QVariant QQmlProperty::read(const QObject *object, const QString &name, QQmlEngine *engine)

使用由engine提供的.newInstance QML组件实例化的环境返回对象object的属性名称name的值。此方法等价于

QQmlProperty p(object, name, engine);
p.read();

bool QQmlProperty::reset() const

重置属性,如果属性可重置则返回 true。如果属性不可重置,则不做任何操作并返回 false。

QQmlProperty::Type QQmlProperty::type() const

返回属性的_type_。

bool QQmlProperty::write(const QVariant &value) const

将属性值设置为value。如果成功返回 true,如果无法设置属性(例如,由于value是错误类型)则返回 false

[静态] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value)

value写入对象object的名称为name的属性。此方法等价于

QQmlProperty p(object, name);
p.write(value);

成功返回 true,否则返回 false

[静态] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value, QQmlContext *ctxt)

使用上下文ctxtvalue写入对象object的名称为name的属性。此方法等价于

QQmlProperty p(object, name, ctxt);
p.write(value);

成功返回 true,否则返回 false

[静态] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value, QQmlEngine *engine)

value写入objectname属性中,使用_by engine提供的环境实例化 QML 组件。此方法等价于

QQmlProperty p(object, name, engine);
p.write(value);

成功返回 true,否则返回 false

QQmlProperty &QQmlProperty::operator=(const QQmlProperty &other)

other赋给此QQmlProperty

bool QQmlProperty::operator==(const QQmlProperty &other) const

如果other和此QQmlProperty表示相同的属性,则返回true。

© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。本处的文档是根据自由软件基金会发布的GNU 自由文档许可证第 1.3 版许可的。Qt 及相关标志是芬兰及全球其他地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。