QQmlProperty 类
QQmlProperty 类封装了从 QML 创建的对象属性访问。 更多...
头文件 | #include <QQmlProperty> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake | QT += 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) | |
bool | connectNotifySignal(QObject *dest, const char *slot) const |
bool | connectNotifySignal(QObject *dest, int method) const |
bool | hasNotifySignal() const |
int | index() const |
bool | isDesignable() const |
bool | isProperty() const |
bool | isResettable() const |
bool | isSignalProperty() const |
bool | isValid() const |
bool | isWritable() const |
QMetaMethod | method() const |
QString | name() const |
bool | needsNotifySignal() const |
QObject * | object() const |
QMetaProperty | property() const |
QMetaType | propertyMetaType() const |
int | propertyType() const |
QQmlProperty::PropertyTypeCategory | propertyTypeCategory() 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::InvalidCategory | 0 | 属性无效或为信号属性。 |
QQmlProperty::List | 1 | 该属性是一个QQmlListProperty列表属性 |
QQmlProperty::Object | 2 | 该属性是QObject派生类型指针 |
QQmlProperty::Normal | 3 | 该属性是正常值属性。 |
枚举QQmlProperty::Type
此枚举指定QML属性的类型。
常量 | 值 | 描述 |
---|---|---|
QQmlProperty::Invalid | 0 | 属性无效。 |
QQmlProperty::Property | 1 | 该属性是常规Qt属性。 |
QQmlProperty::SignalProperty | 2 | 该属性是信号属性。 |
成员函数文档
QQmlProperty::QQmlProperty()
创建一个无效的QQmlProperty。
QQmlProperty::QQmlProperty(QObject *obj)
为obj的默认属性创建QQmlProperty。如果没有默认属性,将创建一个无效的QQmlProperty。
QQmlProperty::QQmlProperty(QObject *obj, QQmlContext *ctxt)
使用上下文ctxt为obj的默认属性创建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
注意:属性对象的获取器函数。
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)
使用上下文ctxt将value写入对象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写入object的name属性中,使用_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 公司的商标。所有其他商标均为其各自所有者的财产。