QMetaProperty 类
QMetaProperty 类提供了关于属性元数据的支持。 更多...
头文件 | #include <QMetaProperty> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
(自 6.0) QUntypedBindable | bindable(QObject *object) const |
QMetaEnum | enumerator() const |
bool | hasNotifySignal() const |
(自 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 |
(自 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 |
(自 6.0) int | typeId() const |
const char * | typeName() const |
int | userType() const |
bool | write(QObject *object, const QVariant &value) const |
(自 6.6) bool | write(QObject *object, QVariant &&v) const |
bool | writeOnGadget(void *gadget, const QVariant &value) const |
(自 6.6) bool | writeOnGadget(void *gadget, 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的设置和获取函数进行更改。有关详细信息,请参阅QObject::setProperty()和QObject::property()。
复制和赋值
QMetaProperty对象可以通过值进行复制。但是,每个副本都将引用相同的底层属性元数据。
另请参阅QMetaObject、QMetaEnum、QMetaMethod和Qt的属性系统。
成员函数说明
[自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
从给定的组件中读取属性值。如果能读取到,则返回该值;否则返回无效变体。
此函数仅应在属性属于Q_GADGET时使用。
int QMetaProperty::relativePropertyIndex() const
返回此属性在封装元对象内的相对索引。
bool QMetaProperty::reset(QObject *object) const
使用重置方法重置给定对象的属性。如果重置成功,则返回true;否则返回false。
重置方法是可选的;只有少数属性支持它们。
bool QMetaProperty::resetOnGadget(void *gadget) const
使用重置方法重置给定组件的属性。如果重置成功,则返回true;否则返回false。
重置方法是可选的;只有少数属性支持它们。
此函数仅应在属性属于Q_GADGET时使用。
int QMetaProperty::revision() const
如果指定了REVISION,则返回属性修订版;否则返回0。
[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
将值作为属性值写入给定对象。如果写入成功,则返回true;否则返回false。
如果值与属性的类型不同,则尝试转换。一个空的QVariant()等价于调用reset(),如果此属性可重置,或者否则设置默认构造的对象。
注意:此函数内部会复制值。当可能时,请使用右值重载。
另请参阅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 版本开始引入。
© 2024 Qt 公司。文档贡献者的版权属于他们各自。此文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 及相关标志是芬兰的 Qt 公司及其在全球其他国家的商标。所有其他商标均为其各自拥有者的财产。