QMetaProperty Class
QMetaProperty 类提供了有关某个属性的元数据。更多内容...
| 头文件: | #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 |
(since 6.11) bool | isOverride() const |
| bool | isReadable() const |
| bool | isRequired() const |
| bool | isResettable() const |
| bool | isScriptable() const |
| bool | isStored() const |
| bool | isUser() const |
| bool | isValid() const |
(since 6.11) bool | isVirtual() 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
如果该属性是 final 的,则返回 `true `;否则返回 `false`。
如果Q_PROPERTY() 的FINAL 属性被设置,则该属性为 final。
bool QMetaProperty::isFlagType() const
如果该属性的类型是作为标志使用的枚举值,则返回true ;否则返回false 。
标志可以通过 OR 运算符进行组合。标志类型隐式地也是枚举类型。
另请参阅 isEnumType()、enumerator() 和QMetaEnum::isFlag()。
[since 6.11] bool QMetaProperty::isOverride() const
如果该属性确实重写了,则返回 `true `;否则返回 `false`。
如果Q_PROPERTY() 的OVERRIDE 属性被设置,则表示该属性已重写。
该函数在 Qt 6.11 中引入。
bool QMetaProperty::isReadable() const
如果该属性可读,则返回true ;否则返回false 。
另请参阅 isWritable()、read() 和isValid()。
bool QMetaProperty::isRequired() const
如果该属性是必填的,则返回true ;否则返回false 。
如果Q_PROPERTY() 的REQUIRED 属性已设置,则该属性为 final。
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()。
[since 6.11] bool QMetaProperty::isVirtual() const
如果该属性是虚拟的,则返回true ;否则返回false 。
如果Q_PROPERTY() 的VIRTUAL 属性已被设置,则该属性为虚属性。
该函数在 Qt 6.11 中引入。
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 。建议在可能的情况下优先使用右值重载。
另请参阅 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 中引入。
© 2026 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.