QMetaProperty

QMetaProperty类提供对Qt对象属性的元数据的访问,包括属性的读取、写入、重置功能,以及是否可设计、脚本化等信息。它还处理枚举类型,并能检查属性是否有通知信号。QMetaProperty对象可以通过对象的元对象获取,用于Qt的属性系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QMetaProperty 类

QMetaProperty 类提供了对应一条属性的元数据。更多内容…

属性内容
头文件#include <QMetaProperty>
qmake:QT += core

公共成员函数

返回类型函数
QMetaEnumenumerator() const
boolhasNotifySignal() const
boolisConstant() const
boolisDesignable(const QObject *object = nullptr) const
boolisEnumType() const
boolisFinal() const
boolisFlagType() const
boolisReadable() const
boolisRequired() const
boolisResettable() const
boolisScriptable(const QObject *object = nullptr) const
boolisStored(const QObject *object = nullptr) const
boolisUser(const QObject *object = nullptr) const
boolisValid() const
boolisWritable() const
const char *name() const
QMetaMethodnotifySignal() const
intnotifySignalIndex() const
intpropertyIndex() const
QVariantread(const QObject *object) const
QVariantreadOnGadget(const void *gadget) const
intrelativePropertyIndex() const
boolreset(QObject *object) const
boolresetOnGadget(void *gadget) const
intrevision() const
QVariant::Typetype() const
const char *typeName() const
intuserType() const
boolwrite(QObject *object, const QVariant &value) const
boolwriteOnGadget(void *gadget, const QVariant &value) const

详细描述

属性元数据可通过对象的元对象获取。详见 QMetaObject::property() 和 QMetaObject::propertyCount()。

属性元数据

属性具有 name() 和 type(),并且有不同的成员来表示其外在表现:isReadable()、isWritable()、isDesignable()、isScriptable()、revision() 和 isStored()。

若该属性是枚举变量,则 isEnumType() 返回 true;若该属性是枚举,同时也是标志位(即可通过运算合并多个值),则 isEnumType() 和 isFlagType() 都返回 true。这些类型的枚举值可以通过 enumerator() 查询。

属性的值通过 read()、write() 和 reset()来获取或设置,也可以通过 QObject 的 get 和 set 函数来操作,详见 QObject::setProperty() 和 QObject::property()。

拷贝与赋值

QMetaProperty 对象可以通过传值方式拷贝,与此同时,每份副本内部都会指向相同的属性元数据。

另请参阅:QMetaObjectQMetaEnumQMetaMethodQt 属性系统

成员函数文档

QMetaEnum QMetaProperty::enumerator() const

若该属性是枚举类型,则返回对应的枚举器,否则返回未定义值。

另请参阅:isEnumType() 和 isFlagType()。


bool QMetaProperty::hasNotifySignal() const

若该属性有对应的通知信号则返回 true,否则返回 false

另请参阅:notifySignal()。


bool QMetaProperty::isConstant() const

若该属性在 Q_PROPERTY()’ 中被标记为 CONSTANT 则返回 true,否则返回 false

本函数在 Qt 4.6 中被引入。


bool QMetaProperty::isDesignable(const QObject *object = nullptr) const

若该属性可被设计师(Qt Designer)编辑则返回 true,否则返回 false

object 未被指定,则当 Q_PROPERTY()DESIGNABLE 标记被指定为 false时,此函数返回 false ;其它情况下返回 true(若该标记被指定为 true,或指定为某个函数,或指定为表达式)。

另请参阅:isScriptable() 和 isStored()。


bool QMetaProperty::isEnumType() const

若该属性是枚举类型则返回 true,否则返回 false

另请参阅:enumerator() 和 isFlagType()。


bool QMetaProperty::isFinal() const

若该属性在 Q_PROPERTY() 中被标记为 FINAL 则返回 true,否则返回 false

本函数在 Qt 4.6 中被引入。


bool QMetaProperty::isFlagType() const

若该属性是标志位则返回 true,否则返回 false

标志位可以通过运算合并多个值。标志位通常也是枚举类型。

另请参阅:isEnumType(),enumerator() 和 QMetaEnum::isFlag()。


bool QMetaProperty::isReadable() const

若该属性可被读取则返回 true,否则返回 false

另请参阅:isWritable(),read() 和 isValid()。


bool QMetaProperty::isRequired() const

若该属性在 Q_PROPERTY() 中被标记为 REQUIRED 则返回 true,否则返回 false

本函数在 Qt 5.15 中被引入。


bool QMetaProperty::isResettable() const

若该属性可被重置为默认值则返回 true,否则返回 false

另请参阅:reset()。


bool QMetaProperty::isScriptable(const QObject *object = nullptr) const

若该属性可被脚本化则返回 true,否则返回 false

object 未被指定,则当 Q_PROPERTY()SCRIPTABLE 标记被指定为 false时,此函数返回 false ;其它情况下返回 true(若该标记被指定为 true,或指定为某个函数,或指定为表达式)。

另请参阅:isDesignable() 和 isStored()。


bool QMetaProperty::isStored(const QObject *object = nullptr) const

若该属性可存储则返回 true,否则返回 false

object 未被指定,则当 Q_PROPERTY()STORED 标记被指定为 false时,此函数返回 false ;其它情况下返回 true(若该标记被指定为 true,或指定为某个函数,或指定为表达式)。

另请参阅:isDesignable() 和 isScriptable().


bool QMetaProperty::isUser(const QObject *object = nullptr) const

若该属性被设计为 USER 性质则返回 true,即可以在 object 中被用户编辑,或在某些方面很重要;其它情况下返回 false。例如,QLineEdittext 属性是 USER 可编辑的。

objectnullptr,则当 Q_PROPERTY()STORED 标记被指定为 false时,此函数返回 false ;其它情况下返回 true

另请参阅:QMetaObject::userProperty(),isDesignable() 和 isScriptable()。


bool QMetaProperty::isValid() const

若该属性是有效的(可读)则返回 true,否则返回 false

另请参阅:isReadable()。


bool QMetaProperty::isWritable() const

若该属性可被写入则返回 true,否则返回 false

另请参阅:isReadable() 和 write()。


const char *QMetaProperty::name() const

返回本属性的名称。

另请参阅:type() 和 typeName()。


QMetaMethod QMetaProperty::notifySignal() const

若已为本属性指定数值修改时发送的通知信号,则返回该通知信号对应的 QMetaMethod 实例,否则返回无效的 QMetaMethod 对象。

本函数在 Qt 4.5 中被引入。

另请参阅:hasNotifySignal()、

int QMetaProperty::notifySignalIndex() const

若已为本属性指定数值修改时发送的通知信号,则返回该通知信号的索引编号,否则返回 -1

本函数在 Qt 4.6 中被引入。

另请参阅:hasNotifySignal()。


int QMetaProperty::propertyIndex() const

返回本属性的索引编号。

本函数在 Qt 4.6 中被引入。


QVariant QMetaProperty::read(const QObject *object) const

读取给定的 object 中的本属性,若可以读取则返回属性值,否则返回无效的 QVariant

另请参阅:write(),reset() 和 isReadable()。

QVariant QMetaProperty::readOnGadget(const void *gadget) const

读取给定的 gadget 中的本属性,若可以读取则返回属性值,否则返回无效的 QVariant

当且仅当本属性是 Q_GADGET 中的属性时,才可使用此函数。

本函数在 Qt 5.5 中被引入。


int QMetaProperty::relativePropertyIndex() const

返回本属性在对应的元对象中的相对索引编号。

本函数在 Qt 5.14 中被引入。-


bool QMetaProperty::reset(QObject *object) const

通过重置方法重置给定的 object 中的本属性。若重置成功则返回 true,否则返回 false

重置方法是可选的,只有少量属性支持重置。

另请参阅:read() 和 write()。


bool QMetaProperty::resetOnGadget(void *gadget) const

通过重置方法重置给定的 gadget 中的本属性。若重置成功则返回 true,否则返回 false

重置方法是可选的,只有少量属性支持重置。

当且仅当本属性是 Q_GADGET 中的属性时,才可使用此函数。

本函数在 Qt 5.5 中被引入。


int QMetaProperty::revision() const

若该属性被 REVISION 标记,则返回对应的版本,否则返回 0

本函数在 Qt 5.1 中被引入。


QVariant::Type QMetaProperty::type() const

返回本属性的类型。返回值是 QVariant::Type 的枚举值之。

另请参阅:userType(),typeName() 和 name()。


const char *QMetaProperty::typeName() const

返回本属性的类型名称。

另请参阅:type() 和 name()。


int QMetaProperty::userType() const

返回本属性的用户类型。返回值是 QMetaType 中注册的类型之一,若该类型未被注册则返回 QMetaType::UnknownType

本函数在 Qt 4.2 中被引入。

另请参阅:type(),QMetaTypetypeName()。


bool QMetaProperty::write(QObject *object, const QVariant &value) const

value 写入到给定的 object 的本属性中,若写入成功则返回 true,否则返回 false

value 与本属性类型不一致,则会尝试进行自动转换。若本属性是可重置的,则传入空的 QVariant() 等价于调用 reset(),否则等价于设置为默认值。

另请参阅:read(),reset() 和 isWritable()。


bool QMetaProperty::writeOnGadget(void *gadget, const QVariant &value) const

value 写入到给定的 gadget 的本属性中,若写入成功则返回 true,否则返回 false

当且仅当本属性是 Q_GADGET 中的属性时,才可使用此函数。

本函数在 Qt 5.5 中被引入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m晴朗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值