QMetaProperty Class
QMetaProperty 类提供有关属性的元数据。更多
Header: | #include <QMetaProperty> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
公共函数
(since 6.0) QUntypedBindable | bindable(QObject *object) const |
QMetaEnum | enumerator() const |
bool | hasNotifySignal() const |
(since 6.0) bool | isBindable() const |
bool | isConstant() const |
bool | isDesignable() const |
bool | isEnumType() const |
bool | isFinal() const |
bool | isFlagType() const |
bool | isReadable() const |
bool | isRequired() const |
bool | isResettable() const |
bool | isScriptable() const |
bool | isStored() const |
bool | isUser() const |
bool | isValid() const |
bool | isWritable() const |
(since 6.0) QMetaType | metaType() const |
const char * | name() const |
QMetaMethod | notifySignal() const |
int | notifySignalIndex() const |
int | propertyIndex() const |
QVariant | read(const QObject *object) const |
QVariant | readOnGadget(const void *gadget) const |
int | relativePropertyIndex() const |
bool | reset(QObject *object) const |
bool | resetOnGadget(void *gadget) const |
int | revision() const |
(since 6.0) int | typeId() const |
const char * | typeName() const |
int | userType() const |
bool | write(QObject *object, const QVariant &value) const |
(since 6.6) bool | write(QObject *object, QVariant &&v) const |
bool | writeOnGadget(void *gadget, const QVariant &value) const |
(since 6.6) bool | writeOnGadget(void *gadget, QVariant &&value) const |
详细说明
属性元数据从对象的元对象中获取。详见QMetaObject::property() 和QMetaObject::propertyCount() 。
属性元数据
一个属性有name() 和metaType() 以及指定其行为的各种属性:isReadable(),isWritable(),isDesignable(),isScriptable(),revision() 和isStored() 。
如果属性是一个枚举,isEnumType() 返回true
;如果属性是一个枚举,同时也是一个标志(即其值可以使用 OR 运算符组合),isEnumType() 和isFlagType() 都返回 true。这些类型的枚举器可从enumerator() 获取。
属性值可通过read(),write() 和reset() 设置和获取;也可通过QObject 的 set 和 get 函数更改。详情请参见QObject::setProperty() 和QObject::property()。
复制和赋值
QMetaProperty 对象可以按值复制。但是,每个副本都将引用相同的底层属性元数据。
另请参阅 QMetaObject,QMetaEnum,QMetaMethod 和Qt 的属性系统。
成员函数文档
[since 6.0]
QUntypedBindable QMetaProperty::bindable(QObject *object) const
返回给定object 上属性的可绑定接口。
如果属性不支持绑定,返回的接口将无效。
此函数在 Qt 6.0 中引入。
另请参阅 QObjectBindableProperty,QProperty, 和isBindable() 。
QMetaEnum QMetaProperty::enumerator() const
如果该属性的类型是枚举器类型,则返回枚举器;否则返回值未定义。
另请参阅 isEnumType() 和isFlagType()。
bool QMetaProperty::hasNotifySignal() const
如果该属性有相应的更改通知信号,则返回true
;否则返回false
。
另请参阅 notifySignal() 。
[since 6.0]
bool QMetaProperty::isBindable() const
如果Q_PROPERTY()
公开了绑定功能,则返回true
;否则返回 false。
这意味着你可以创建将该属性作为依赖项的绑定,或在该属性上安装 QPropertyObserver 对象。除非该属性是只读的,否则您也可以在该属性上设置绑定。
此函数在 Qt 6.0 中引入。
另请参阅 QProperty 、isWritable() 和bindable()。
bool QMetaProperty::isConstant() const
如果属性是常量,则返回true
;否则返回false
。
如果Q_PROPERTY()
的CONSTANT
属性已设置,则属性为常量。
bool QMetaProperty::isDesignable() const
如果Q_PROPERTY()
的DESIGNABLE
属性为 false,则返回false
;否则返回true
。
另请参阅 isScriptable() 和isStored()。
bool QMetaProperty::isEnumType() const
如果属性类型是枚举值,则返回true
;否则返回false
。
另请参阅 enumerator() 和isFlagType()。
bool QMetaProperty::isFinal() const
如果属性是最终属性,则返回true
;否则返回false
。
如果Q_PROPERTY()
的FINAL
属性已设置,则属性为最终属性。
bool QMetaProperty::isFlagType() const
如果属性类型是用作标志的枚举值,则返回true
;否则返回false
。
标志可以使用 OR 运算符组合。标志类型隐含为枚举类型。
另请参阅 isEnumType()、enumerator() 和QMetaEnum::isFlag()。
bool QMetaProperty::isReadable() const
如果该属性可读,则返回true
;否则返回false
。
另请参阅 isWritable()、read() 和isValid()。
bool QMetaProperty::isRequired() const
如果属性为必填属性,则返回true
;否则返回false
。
如果Q_PROPERTY()
的REQUIRED
属性已设置,则该属性为最终属性。
bool QMetaProperty::isResettable() const
如果该属性可以重置为默认值,则返回true
;否则返回false
。
另请参阅 reset() 。
bool QMetaProperty::isScriptable() const
如果Q_PROPERTY()
的SCRIPTABLE
属性为 false,则返回false
;否则返回 true。
另请参阅 isDesignable() 和isStored() 。
bool QMetaProperty::isStored() const
如果属性已存储,则返回true
;否则返回 false。
如果Q_PROPERTY()
的STORED
属性为 false,则函数返回false
;否则返回 true。
另请参阅 isDesignable() 和isScriptable()。
bool QMetaProperty::isUser() const
如果Q_PROPERTY()
的USER
属性为 false,则返回false
。否则返回 true,表示该属性被指定为USER
属性,即用户可以编辑的属性或在其他方面具有重要意义的属性。
另请参阅 QMetaObject::userProperty()、isDesignable() 和isScriptable()。
bool QMetaProperty::isValid() const
如果该属性有效(可读),则返回true
;否则返回false
。
另请参阅 isReadable() 。
bool QMetaProperty::isWritable() const
如果该属性可写,则返回true
;否则返回 false。
另请参阅 isReadable() 和write()。
[since 6.0]
QMetaType QMetaProperty::metaType() const
返回此属性的QMetaType 。
此函数在 Qt 6.0 中引入。
另请参见 QMetaType 。
const char *QMetaProperty::name() const
返回此属性的名称。
QMetaMethod QMetaProperty::notifySignal() const
如果指定了属性更改通知信号,则返回QMetaMethod 实例,否则返回无效的QMetaMethod 。
另请参阅 hasNotifySignal() 。
int QMetaProperty::notifySignalIndex() const
如果指定了属性更改通知信号,则返回该信号的索引,否则返回-1。
另请参见 hasNotifySignal().
int QMetaProperty::propertyIndex() const
返回该属性的索引。
QVariant QMetaProperty::read(const QObject *object) const
从给定的object 中读取属性值。如果能读取,则返回值;否则返回无效变量。
另请参阅 write()、reset() 和isReadable()。
QVariant QMetaProperty::readOnGadget(const void *gadget) const
从给定的gadget 中读取属性值。如果能读取,则返回值;否则返回无效变量。
只有当该属性属于Q_GADGET
int QMetaProperty::relativePropertyIndex() const
返回该属性在外层元对象中的相对索引。
bool QMetaProperty::reset(QObject *object) const
使用重置方法重置给定object 的属性。如果重置成功,则返回true
;否则返回false
。
重置方法是可选的,只有少数属性支持重置方法。
bool QMetaProperty::resetOnGadget(void *gadget) const
使用重置方法重置给定gadget 的属性。如果重置成功,则返回true
;否则返回false
。
重置方法是可选的,只有少数属性支持重置方法。
只有在该属性属于Q_GADGET
int QMetaProperty::revision() const
如果Q_REVISION 指定了属性修订,则返回属性修订,否则返回 0。自 Qt 6.0 起,非零值被编码,可使用QTypeRevision::fromEncodedVersion() 解码。
[since 6.0]
int QMetaProperty::typeId() const
返回属性的存储类型。这与metaType().id() 相同。
此函数在 Qt 6.0 中引入。
另请参阅 QMetaType 、typeName() 和metaType()。
const char *QMetaProperty::typeName() const
返回此属性类型的名称。
int QMetaProperty::userType() const
返回该属性的用户类型。返回值是在QMetaType 注册的值之一。
这等同于metaType().id()
另请参阅 type()、QMetaType 、typeName() 和metaType()。
bool QMetaProperty::write(QObject *object, const QVariant &value) const
将value 作为属性值写入给定的object 。如果写入成功,则返回 true;否则返回false
。
如果value 与属性类型不同,则会尝试转换。如果该属性可重置,则空的 QVariant() 相当于调用reset() ,否则就是设置默认构造的对象。
注意: 此函数在内部复制了value 。在可能的情况下,最好使用 rvalue 重载。
另请参阅 read()、reset() 和isWritable()。
[since 6.6]
bool QMetaProperty::write(QObject *object, QVariant &&v) const
这是一个重载函数。
该函数在 Qt 6.6 中引入。
bool QMetaProperty::writeOnGadget(void *gadget, const QVariant &value) const
将value 作为属性值写入给定的gadget 。如果写入成功,则返回 true;否则返回false
。
该函数只有在该属性属于Q_GADGET
[since 6.6]
bool QMetaProperty::writeOnGadget(void *gadget, QVariant &&value) const
这是一个重载函数。
该函数在 Qt 6.6 中引入。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.