QMetaType 的弃用成员

以下 QMetaType 类的成员已被弃用。 提供它们是为了保持旧源代码的运行。强烈建议不要在新代码中使用它们。

静态公共成员

(已弃用) boolcompare(const void *lhs, const void *rhs, int typeId, int *result)
(已弃用) void *construct(int type, void *where, const void *copy)
(已弃用) boolconvert(const void *from, int fromTypeId, void *to, int toTypeId)
(已弃用) void *create(int type, const void *copy = nullptr)
(已弃用) booldebugStream(QDebug &dbg, const void *rhs, int typeId)
(已弃用) voiddestroy(int type, void *data)
(已弃用) voiddestruct(int type, void *where)
(已弃用) boolhasRegisteredDebugStreamOperator()
(已弃用) boolhasRegisteredDebugStreamOperator(int typeId)
(已弃用) boolload(QDataStream &stream, int type, void *data)
(已弃用) const QMetaObject *metaObjectForType(int type)
(已弃用) boolsave(QDataStream &stream, int type, const void *data)
(已弃用) intsizeOf(int type)
(已弃用) inttype(const char *typeName)
(已弃用) inttype(const QByteArray &typeName)
(已弃用) QMetaType::TypeFlagstypeFlags(int type)
(已弃用) const char *typeName(int typeId)

相关非成员函数

(已弃用) intqRegisterMetaType(const char *typeName)

成员函数文档

[静态, 已弃用] bool QMetaType::compare(const void *lhs, const void *rhs, int typeId, int *result)

此函数已弃用。强烈建议不要在新代码中使用它。

请使用非静态 compare 方法代替。

比较左操作数(lhs)和右操作数(rhs)的对象。两个对象都必须是类型 typeId。如果 lhs 小于、等于或大于 rhs,则 result 被设置为小于、等于或大于零。如果比较成功,返回 true,否则返回 false

[静态,已弃用] void *QMetaType::construct(int type, void *where, const void *copy)

此函数已弃用。强烈建议不要在新代码中使用它。

在由 where 地址指向的现有内存中构造给定的 type 的值,这是 copy 的副本,并返回 where。如果 copy 为零,则构造默认值。

这是一个用于显式管理用于存储类型的内存的低级函数。如果您不需要此级别的控制(即,使用“new”而不是“placement new”),请考虑调用 create()。

您必须确保 where 指向可以存储类型 type 的位置的内存,并且 where 是适当对齐的。可以通过调用 sizeOf() 来查询类型的大小。

对齐的规则是,类型是对其自然边界对齐的,这是大于类型的较小的2的幂,除非此对齐大于平台的最大有用对齐。出于实际目的,大于 2 * sizeof(void*) 的对齐仅适用于特殊硬件指令(例如,x86 上的对齐 SSE 加载和存储)。

另请参阅destruct() 和 sizeOf

[静态,已弃用] bool QMetaType::convert(const void *from, int fromTypeId, void *to, int toTypeId)

此函数已弃用。强烈建议不要在新代码中使用它。

from 处的对象从 fromTypeId 转换为 to 中预分配的按类型 toTypeId 保存的空间。如果转换成功,返回 true,否则返回 false。

fromto 都必须是有效指针。

[静态,已弃用] void *QMetaType::create(int type, const void *copy = nullptr)

此函数已弃用。强烈建议不要在新代码中使用它。

返回 copy 的副本,假设它属于类型 type。如果 copy 为零,则创建一个默认构造的实例。

另请参阅destroy(),isRegistered() 和 Type

[静态,已弃用] bool QMetaType::debugStream(QDebug &dbg, const void *rhs, int typeId)

此函数已弃用。强烈建议不要在新代码中使用它。

这是一个重载函数。

[静态,已弃用] void QMetaType::destroy(int type, void *data)

此函数已弃用。强烈建议不要在新代码中使用它。

销毁 data,假设它属于给定的 type

另请参阅create(),isRegistered() 和 Type

[静态,已废弃] void QMetaType::destruct(int type, void *where)

此函数已弃用。强烈建议不要在新代码中使用它。

销毁位于wheretype的值。

destroy()不同,此函数仅调用类型的析构函数,而不调用删除操作符。

另请参阅construct()。

[静态,已废弃] 模板 <typename T> bool QMetaType::hasRegisteredDebugStreamOperator()

此函数已弃用。强烈建议不要在新代码中使用它。

如果元类型系统已经注册了类型T的调试流操作符,则返回true

[静态,已废弃] bool QMetaType::hasRegisteredDebugStreamOperator(int typeId)

此函数已弃用。强烈建议不要在新代码中使用它。

请使用QMetaType::hasRegisteredDebugStreamOperator()。

如果元类型系统已为类型id typeId注册了调试流操作符,则返回true

[静态,已废弃] bool QMetaType::load(QDataStream &stream, int type, void *data)

此函数已弃用。强烈建议不要在新代码中使用它。

这是一个重载函数。

[静态,已废弃] const QMetaObject *QMetaType::metaObjectForType(int type)

此函数已弃用。强烈建议不要在新代码中使用它。

返回typeQMetaType::metaObject

另请参阅metaObject

[静态,已废弃] bool QMetaType::save(QDataStream &stream, int type, const void *data)

此函数已弃用。强烈建议不要在新代码中使用它。

这是一个重载函数。

[静态,已废弃] int QMetaType::sizeOf(int type)

此函数已弃用。强烈建议不要在新代码中使用它。

以字节为单位返回给定type的大小(即sizeof(T),其中T是type参数标识的实际类型)。

此函数通常与construct()一起使用,以执行对类型使用的底层管理。

另请参阅construct() 和 QMetaType::alignOf

[静态,已废弃] int QMetaType::type(const char *typeName)

此函数已弃用。强烈建议不要在新代码中使用它。

返回称为typeName的类型的一个句柄,如果没有此类类型,则返回QMetaType::UnknownType

另请参阅isRegistered(),typeName() 和 Type

[静态,已废弃] int QMetaType::type(const QByteArray &typeName)

此函数已弃用。强烈建议不要在新代码中使用它。

这是一个重载函数。

返回称为typeName的类型的一个句柄,如果没有此类类型,则返回0。

另请参阅isRegistered() 和 typeName

[静态,已废弃] QMetaType::TypeFlags QMetaType::typeFlags(int type)

此函数已弃用。强烈建议不要在新代码中使用它。

返回指定 type 的标志。

参见QMetaType::TypeFlags.

[静态,已废弃] const char *QMetaType::typeName(int typeId)

此函数已弃用。强烈建议不要在新代码中使用它。

返回与指定 typeId 相关联的类型名称,如果没有找到匹配的类型则返回空指针。返回的指针不应被删除。

参见type(),isRegistered(),Typename.

相关非成员函数

[已废弃] template <typename T> int qRegisterMetaType(const char *typeName)

此函数已弃用。强烈建议不要在新代码中使用它。

为类型 T 注册类型名称 typeName。返回由 QMetaType 使用的内部 ID。任何具有公共默认构造函数、公共复制构造函数和公共析构函数的类或结构体都可以进行注册。

此函数要求在函数被调用的点 T 是一个完全定义的类型。对于指针类型,它还要求所指向的类型是完全定义的。使用 Q_DECLARE_OPAQUE_POINTER() 可以注册指向已声明的类型的指针。

类型注册后,可以在运行时动态创建和销毁该类型的对象。

此示例注册了类 MyClass

qRegisterMetaType<MyClass>("MyClass");

此函数对于注册 typedef 以供 QMetaProperty 使用或在 QueuedConnections 中使用很有用。

typedef QString CustomString;
qRegisterMetaType<CustomString>("CustomString");

注意:此函数仅适用于为别名 (typedef) 注册类型,对于其他情况应使用 Q_DECLARE_METATYPEqMetaTypeId()。

参见isRegistered() 和 Q_DECLARE_METATYPE.

© 2024 Qt 公司。此处包含的文档贡献的版权属于各自的所有者。此处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可版本 1.3 的条款授权的。Qt 和相应的标志是芬兰的 Qt 公司及其全球子公司和关联公司的 商标。所有其他商标均为其各自所有者的财产。