原标题:QMeta* 相关类

本节内容结构图如下,文字版移步这里:

QMetaObject 类

概述

QMetaObject 类储存着 Qt 对象的元信息,能使用它的场合也就是 meta-application(和元相关的应用,如脚本引擎、GUI 构建器等),这些应用场合我们几乎都不太会去涉及。

能干什么?

概述

QMetaClassInfo 类存储着类的额外信息的元数据,其实就是一些“键值对”。给类添加键值对的方法是用 Q_CLASSINFO() 宏,例如:

能干什么?

概述

QMetaEnum 类存储着类的枚举的元信息。

能干什么?

概述

QMetaMethod 类是存储着成员函数的元信息。

能干什么?

parameterNames() const 数量:int parameterCount() const 类型:int parameterType(int index) const 返回值 名称:const char * typeName() const 类型:int returnType() const 尝试调用 invoke() invokeOnGadget() 其他 获取 revision:int revision() const 获取 tag:const char *tag() const

static 函数

QMetaMethod fromSignal(PointerToMemberFunction signal)

相关宏

Q_METAMETHOD_INVOKE_MAX_ARGS QMetaProperty 类

概述

QMetaProperty 类储存着属性的元信息。

能干什么?

基本信息 名称 获取:const char *name() const 类型 获取:QVariant::Type type() const 类型名:const char *typeName() const 自定义:int userType() const 属性 Constant:bool isConstant() const Final:bool isFinal() const Scriptable:bool isScriptable(const QObject *object = nullptr) const Stored:bool isStored(const QObject *object = nullptr) const User:bool isUser(const QObject *object = nullptr) const 枚举 获取:QMetaEnum enumerator() const 判断:bool isEnumType() const / bool isFlagType() const 信号 获取:QMetaMethod notifySignal() const 判断:bool hasNotifySignal() const 索引:int notifySignalIndex() const 值 可读 获取:QVariant read(const QObject *object) const / QVariant readOnGadget(const void *gadget) const 判断:bool isReadable() const / bool isValid() const 可写 设置:bool write(QObject *object, const QVariant &value) const / bool writeOnGadget(void *gadget, const QVariant &value) const 判断:bool isWritable() const 重置 设置:bool reset(QObject *object) const / bool resetOnGadget(void *gadget) const 判断:bool isResettable() const QMetaType 类

概述

QMetaType 类存储着类型的元信息。

能干什么?

基本信息 类型 枚举:enum Type { Void, Bool, Int, UInt, ..., UnknownType } 名称:[static] const char *typeName(int typeId) 获取:[static] int type(const char *typeName) 大小: 获取:int sizeOf() const / [static] int sizeOf(int type) flag 枚举:enum TypeFlag { NeedsConstruction, NeedsDestruction, MovableType, IsEnumeration, PointerToQObject } 获取:QMetaType::TypeFlags flags() const 属性 是否注册过:bool isRegistered() const / [static] bool isRegistered(int type) 是否可用:bool isValid() const 元对象 获取:const QMetaObject * metaObject() const / [static] const QMetaObject *metaObjectForType(int type) 构造 / 析构 构造 QMetaType(const int typeId) void * construct(void *where, const void *copy = ...) const / [static] void * construct(int type, void *where, const void *copy) void * create(const void *copy = ...) const / [static] void * create(int type, const void *copy = nullptr) 析构 ~QMetaType() void destroy(void *data) const / [static] void destroy(int type, void *data) void destruct(void *data) const / void destruct(int type, void *where) 其他 static 函数 对比 对比:bool compare(const void *lhs, const void *rhs, int typeId, int *result) 判断:hasRegisteredComparators() 注册:registerComparators() 相等 相等:bool equals(const void *lhs, const void *rhs, int typeId, int *result) 注册:registerEqualsComparator() 转换 转换:bool convert(const void *from, int fromTypeId, void *to, int toTypeId) 判断:hasRegisteredConverterFunction() 注册:registerConverter() 信息流: 调试流:debugStream() 判断:hasRegisteredDebugStreamOperator() 注册:registerDebugStreamOperator() 加载:bool load(QDataStream &stream, int type, void *data) 保存:bool save(QDataStream &stream, int type, const void *data)

查看原文 >>
相关文章