PySide6.QtCore.QMetaType¶
- class QMetaType¶
-
概要¶
方法¶
def
__init__()
def
alignOf()
def
construct()
def
create()
def
destroy()
def
destruct()
def
equals()
def
flags()
def
id()
def
isDestructible()
def
isOrdered()
def
isRegistered()
def
isValid()
def
load()
def
name()
def
__ne__()
def
__eq__()
def
registerType()
def
save()
def
sizeOf()
def
underlyingType()
静态函数¶
def
canConvert()
def
canView()
def
compare()
def
construct()
def
convert()
def
create()
def
destroy()
def
destruct()
def
equals()
def
fromName()
def
isRegistered()
def
load()
def
save()
def
sizeOf()
def
type()
def
typeFlags()
def
typeName()
def
view()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
该类用作在
QVariant
以及队列信号和槽连接中编组类型的辅助工具。它将类型名称与类型关联起来,以便在运行时动态创建和销毁。类型名称可以通过使用
qRegisterMetaType()
或registerType()
注册到QMetaType
。大多数操作不需要注册;只有在尝试将字符串形式的类型名称解析回QMetaType
对象或类型ID时才需要注册。这些操作包括使用connect()
进行的一些旧式信号-槽连接、从QDataStream
读取用户类型到QVariant
,或绑定到其他语言和IPC机制,如QML、D-Bus、JavaScript等。以下代码通过名称分配并销毁
MyClass
的实例,这要求MyClass
之前已被注册:type = QMetaType.fromName("MyClass") if type.isValid(): myClassPtr = type.create() ... type.destroy(myClassPtr) myClassPtr = None
如果我们希望流操作符
operator<<()
和operator>>()
能够处理存储自定义类型的QVariant
对象,自定义类型必须提供operator<<()
和operator>>()
操作符。另请参阅
Q_DECLARE_METATYPE()
setValue()
value()
fromValue()
- class Type¶
(继承自
enum.IntEnum
) 这些是QMetaType
支持的内置类型:常量
描述
QMetaType.Void
void
QMetaType.Bool
bool
QMetaType.Int
int
QMetaType.UInt
unsigned int
QMetaType.Double
double
QMetaType.QChar
QChar
QMetaType.QString
QString
QMetaType.QByteArray
QByteArray
QMetaType.Nullptr
std::nullptr_t
QMetaType.VoidStar
void *
QMetaType.Long
long
QMetaType.LongLong
长整型
QMetaType.Short
short
QMetaType.Char
char
QMetaType.Char16
char16_t
QMetaType.Char32
char32_t
QMetaType.ULong
unsigned long
QMetaType.ULongLong
ULongLong
QMetaType.UShort
unsigned short
QMetaType.SChar
有符号 字符
QMetaType.UChar
unsigned char
QMetaType.Float
float
QMetaType.Float16
qfloat16
QMetaType.QObjectStar
QObject
*QMetaType.QCursor
QCursor
QMetaType.QDate
QDate
QMetaType.QSize
QSize
QMetaType.QTime
QTime
QMetaType.QVariantList
QVariantList
QMetaType.QPolygon
QPolygon
QMetaType.QPolygonF
QPolygonF
QMetaType.QColor
QColor
QMetaType.QColorSpace
QColorSpace(在Qt 5.15中引入)
QMetaType.QSizeF
QSizeF
QMetaType.QRectF
QRectF
QMetaType.QLine
QLine
QMetaType.QTextLength
QTextLength
QMetaType.QStringList
QStringList
QMetaType.QVariantMap
QVariantMap
QMetaType.QVariantHash
QVariantHash
QMetaType.QVariantPair
QVariantPair
QMetaType.QIcon
QIcon
QMetaType.QPen
QPen
QMetaType.QLineF
QLineF
QMetaType.QTextFormat
QTextFormat
QMetaType.QRect
QRect
QMetaType.QPoint
QPoint
QMetaType.QUrl
QUrl
QMetaType.QRegularExpression
QRegularExpression
QMetaType.QDateTime
QDateTime
QMetaType.QPointF
QPointF
QMetaType.QPalette
QPalette
QMetaType.QFont
QFont
QMetaType.QBrush
QBrush
QMetaType.QRegion
QRegion
QMetaType.QBitArray
QBitArray
QMetaType.QImage
QImage
QMetaType.QKeySequence
QKeySequence
QMetaType.QSizePolicy
QSizePolicy
QMetaType.QPixmap
QPixmap
QMetaType.QLocale
QLocale
QMetaType.QBitmap
QBitmap
QMetaType.QTransform
QTransform
QMetaType.QMatrix4x4
QMatrix4x4
QMetaType.QVector2D
QVector2D
QMetaType.QVector3D
QVector3D
QMetaType.QVector4D
QVector4D
QMetaType.QQuaternion
QQuaternion
QMetaType.QEasingCurve
QEasingCurve
QMetaType.QJsonValue
QJsonValue
QMetaType.QJsonObject
QJsonObject
QMetaType.QJsonArray
QJsonArray
QMetaType.QJsonDocument
QJsonDocument
QMetaType.QCborValue
QCborValue
QMetaType.QCborArray
QCborArray
QMetaType.QCborMap
QCborMap
QMetaType.QCborSimpleType
QCborSimpleType
QMetaType.QModelIndex
QModelIndex
QMetaType.QPersistentModelIndex
QPersistentModelIndex(在Qt 5.5中引入)
QMetaType.QUuid
QUuid
QMetaType.QByteArrayList
QByteArrayList
QMetaType.QVariant
QVariant
QMetaType.User
用户类型的基础值
QMetaType.UnknownType
这是一个无效的类型ID。它由
QMetaType
返回,用于未注册的类型可以使用
qRegisterMetaType()
或通过调用registerType()
来注册其他类型。另请参阅
- class TypeFlag¶
(继承自
enum.Flag
) 该枚举描述了由QMetaType
支持的类型的属性。常量
描述
QMetaType.NeedsConstruction
此类型具有默认构造函数。如果未设置此标志,则可以使用memset安全地将实例初始化为0。
QMetaType.NeedsCopyConstruction
(自6.5版本起) 此类型具有非平凡的复制构造函数。如果未设置此标志,则可以使用memcpy复制实例。
QMetaType.NeedsMoveConstruction
(自6.5版本起) 此类型具有非平凡的移动构造函数。如果未设置此标志,实例可以通过memcpy移动。
QMetaType.NeedsDestruction
此类型具有非平凡的析构函数。如果未设置此标志,则在丢弃对象之前不需要调用析构函数。
QMetaType.RelocatableType
具有此属性的类型的实例可以使用memcpy安全地移动到不同的内存位置。
QMetaType.IsEnumeration
此类型是一个枚举。
QMetaType.IsUnsignedEnumeration
如果类型是枚举类型,其基础类型是无符号的。
QMetaType.PointerToQObject
此类型是指向从
QObject
派生的类的指针。QMetaType.IsPointer
此类型是指向另一种类型的指针。
QMetaType.IsConst
表示此类型的值是不可变的;例如,因为它们是指向常量对象的指针。
注意
在 Qt 6.5 之前,如果复制构造函数或析构函数是非平凡的(即类型不是平凡的),则 NeedsConstruction 和 NeedsDestruction 标志都会被错误地设置。
请注意,Needs 标志可能已设置,但元类型可能没有相关类型的公开可访问构造函数或公开可访问析构函数。
- __init__()¶
构造一个默认的、无效的
QMetaType
对象。- __init__(py_type)
- Parameters:
py_type –
PyTypeObject
- __init__(type)
- Parameters:
类型 –
Type
- __init__(type)
- Parameters:
类型 – int
构造一个
QMetaType
对象,该对象包含有关类型typeId
的所有信息。- alignOf()¶
- Return type:
整数
返回类型的对齐方式(以字节为单位)(即alignof(T),其中T是此
QMetaType
实例所构造的实际类型)。此函数通常与
construct()
一起使用,以执行对类型使用的内存的低级管理。另请参阅
- static canConvert(fromType, toType)¶
如果
convert
可以从fromType
转换为toType
,则返回true
。Qt支持以下转换:
类型
自动转换为
QChar
,Double
,Int
,LongLong
,QString
,UInt
,ULongLong
Double
,Int
,LongLong
,QString
,UInt
,ULongLong
,QUuid
Bool
,QChar
,Double
,LongLong
,QString
,UInt
,ULongLong
QStringList
(如果列表的项可以转换为QStrings)Bool
,QByteArray
,QChar
,Double
,Int
,QString
,UInt
,ULongLong
Bool
,QByteArray
,QChar
,QColor
,QDate
,QDateTime
,Double
,QFont
,Int
,QKeySequence
,LongLong
,QStringList
,QTime
,UInt
,ULongLong
,QUuid
QVariantList
,QString
(如果列表恰好包含一个项目)Bool
,QChar
,Double
,Int
,LongLong
,QString
,ULongLong
支持在基本类型(int, float, bool 等)之间进行转换。
如果从
fromType
描述的类型到toType
描述的类型的qobject_cast
成功,那么对于从QObject
派生的类型的指针之间的转换,此函数也将返回true。如果
toType
是QVariantList
,那么从顺序容器的转换也会对此函数返回true。同样地,当
toType
是QVariantHash
或QVariantMap
时,从关联容器的转换也会对此函数返回true。另请参阅
convert()
QSequentialIterable
Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE()
QAssociativeIterable
Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE()
- static canView(fromType, toType)¶
如果
view
可以在类型fromType
上创建类型toType
的可变视图,则返回true
。如果从
fromType
描述的类型到toType
描述的类型的qobject_cast
成功,则对于从QObject
派生的类型的指针之间的转换,此函数将返回true。你可以在任何使用
Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE()
注册的容器上创建一个QSequentialIterable
类型的可变视图。同样,你可以在任何使用
Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE()
注册的容器上创建一个QAssociativeIterable
类型的可变视图。另请参阅
convert()
QSequentialIterable
Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE()
QAssociativeIterable
Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE()
- static compare(lhs, rhs, typeId, result)¶
- Parameters:
lhs –
void
rhs –
void
typeId – int
result – int
- Return type:
布尔
注意
此函数已弃用。
请使用非静态的compare方法代替
比较
lhs
和rhs
处的对象。两个对象都需要是typeId
类型。如果lhs
小于、等于或大于rhs
,则result
被设置为小于、等于或大于零。如果比较成功,则返回true
,否则返回false
。- construct(where[, copy=None])¶
- Parameters:
where –
void
复制 –
void
- Return type:
void
构造一个类型值,该类型值由
QMetaType
实例在where
所指向的现有内存中构造,该值是copy
的副本,并返回where
。如果copy
为零,则该值将默认构造。这是一个用于显式管理用于存储类型的内存底层函数。如果您不需要这种级别的控制(即使用“new”而不是“placement new”),请考虑调用
create()
。你必须确保
where
指向一个可以存储新值的位置,并且where
是适当对齐的。可以通过调用sizeOf()
来查询类型的大小。对齐的经验法则是,类型对齐到其自然边界,这是大于该类型的最小2的幂,除非该对齐大于平台的最大有用对齐。出于实际目的,大于2 * sizeof(void*)的对齐仅对特殊硬件指令(例如,x86上的对齐SSE加载和存储)是必要的。
- static construct(type, where, copy)
- Parameters:
type – int
where –
void
copy –
void
- Return type:
void
注意
此函数已弃用。
在由
where
指定的现有内存中构造给定type
的值,该值是copy
的副本,并返回where
。如果copy
为零,则该值将默认构造。这是一个用于显式管理用于存储类型的内存低级函数。如果您不需要这种级别的控制(即使用“new”而不是“placement new”),请考虑调用
create()
。您必须确保
where
指向一个可以存储type
类型值的位置,并且where
是适当对齐的。可以通过调用sizeOf()
来查询类型的大小。对齐的经验法则是,类型对齐到其自然边界,这是大于该类型的最小2的幂,除非该对齐大于平台的最大有用对齐。出于实际目的,大于2 * sizeof(void*)的对齐仅对特殊硬件指令(例如,x86上的对齐SSE加载和存储)是必要的。
另请参阅
- static convert(fromType, from, toType, to)¶
将位于
from
的对象从fromType
转换为预分配的空间to
,类型为toType
。如果转换成功,则返回true
,否则返回false。两个
from
和to
都必须是有效的指针。- static convert(from, fromTypeId, to, toTypeId)
- Parameters:
from –
void
fromTypeId – int
to –
void
toTypeId – int
- Return type:
布尔
注意
此函数已弃用。
将位于
from
的对象从fromTypeId
转换为位于to
的预分配空间,类型为toTypeId
。如果转换成功,则返回true
,否则返回 false。两个
from
和to
都必须是有效的指针。- create([copy=None])¶
- Parameters:
复制 –
void
- Return type:
void
返回
copy
的副本,假设它是为此QMetaType
实例创建的类型。如果copy
是None
,则创建一个默认构造的实例。另请参阅
- static create(type[, copy=None])
- Parameters:
type – int
copy –
void
- Return type:
void
注意
此函数已弃用。
返回
copy
的副本,假设它是type
类型。如果copy
为零,则创建一个默认构造的实例。另请参阅
- destroy(data)¶
- Parameters:
数据 –
void
销毁
data
,假设它是为此QMetaType
实例创建的类型。另请参阅
- static destroy(type, data)
- Parameters:
type – int
data –
void
注意
此函数已弃用。
销毁
data
,假设它是给定的type
。另请参阅
- destruct(data)¶
- Parameters:
数据 –
void
销毁位于
data
的值,假设它是为此QMetaType
实例构造的类型。与
destroy()
不同,此函数仅调用类型的析构函数,而不调用delete操作符。另请参阅
- static destruct(type, where)
- Parameters:
type – int
where –
void
注意
此函数已弃用。
销毁位于
where
的给定type
的值。与
destroy()
不同,此函数仅调用类型的析构函数,而不调用delete操作符。另请参阅
- equals(lhs, rhs)¶
- Parameters:
lhs –
void
rhs –
void
- Return type:
布尔
比较
lhs
和rhs
处的对象是否相等。两个对象必须属于此元类型所描述的类型。只有当元类型声明中可见该类型的小于或等于运算符时,才能比较这两个对象。否则,元类型永远不会认为值相等。当元类型声明中可见等于运算符时,它是权威的;否则,如果可见小于运算符,当两个值都不小于对方时,则认为它们相等。如果值是无序的(详见
compare()
),则它们不相等。如果两个对象比较相等,则返回 true,否则返回 false。
- static equals(lhs, rhs, typeId, result)
- Parameters:
lhs –
void
rhs –
void
typeId – int
result – int
- Return type:
布尔
注意
此函数已弃用。
返回此
QMetaType
实例构造的类型的标志。要检查特定的类型特性,建议使用“is-”函数之一,而不是直接使用标志。返回一个与
typeName
匹配的QMetaType
。如果QMetaType
不知道typeName,则返回的对象无效。- static hasRegisteredConverterFunction(fromType, toType)¶
如果元类型系统具有从元类型ID
fromType
到toType
的注册转换,则返回true
- hasRegisteredDataStreamOperators()¶
- Return type:
布尔
如果元类型系统已为此元类型注册了数据流操作符,则返回
true
。- hasRegisteredDebugStreamOperator()¶
- Return type:
布尔
如果元类型系统为此元类型注册了调试流操作符,则返回
true
。- static hasRegisteredDebugStreamOperator(typeId)
- Parameters:
typeId – int
- Return type:
布尔
注意
此函数已弃用。
请使用
hasRegisteredDebugStreamOperator()
代替。如果元类型系统为类型ID
typeId
注册了调试流操作符,则返回true
。- static hasRegisteredMutableViewFunction(fromType, toType)¶
如果元类型系统在元类型ID
fromType
到元类型IDtoType
上注册了可变视图,则返回true
。- id([arg__1=0])¶
- Parameters:
arg__1 – 整数
- Return type:
整数
- isCopyConstructible()¶
- Return type:
布尔
如果此类型可以复制构造,则返回true。如果可以,则
construct()
和create()
可以与不为空的copy
参数一起使用。- isDefaultConstructible()¶
- Return type:
布尔
如果此类型可以默认构造,则返回true。如果可以,则
construct()
和create()
可以与为null的copy
参数一起使用。- isDestructible()¶
- Return type:
布尔
如果此类型可以被销毁,则返回true。如果可以,则可以调用
destroy()
和destruct()
。- isEqualityComparable()¶
- Return type:
布尔
如果此元类型描述的类型的“小于或等于”运算符对元类型声明可见,则返回
true
,否则返回false
。另请参阅
- isMoveConstructible()¶
- Return type:
布尔
如果此类型可以移动构造,则返回true。
QMetaType
目前没有API可以利用此特性。- isOrdered()¶
- Return type:
布尔
如果此元类型描述的类型的小于运算符对元类型声明可见,则返回
true
,否则返回false
。- isRegistered()¶
- Return type:
布尔
如果此
QMetaType
对象已在Qt全局元类型注册表中注册,则返回true
。注册允许通过其名称(使用fromName()
)或其ID(使用构造函数)找到该类型。另请参阅
qRegisterMetaType()
isValid()
- static isRegistered(type)
- Parameters:
类型 – int
- Return type:
布尔
如果ID为
type
的数据类型已注册,则返回true
;否则返回false
。另请参阅
- isValid()¶
- Return type:
布尔
如果此
QMetaType
对象包含有关类型的有效信息,则返回true
,否则返回false。另请参阅
- load(stream, data)¶
- Parameters:
stream –
QDataStream
data –
void
- Return type:
布尔
从给定的
stream
中读取此类型的对象到data
中。如果对象成功加载,则返回true
;否则返回false
。通常情况下,您不需要直接调用此函数。相反,请使用
QVariant
的operator>>()
,它依赖于load()来流式传输自定义类型。另请参阅
- static load(stream, type, data)
- Parameters:
stream –
QDataStream
type – int
data –
void
- Return type:
布尔
注意
此函数已弃用。
这是一个重载函数。
- static metaObjectForType(type)¶
- Parameters:
类型 – int
- Return type:
注意
此函数已弃用。
返回
metaObject
用于type
另请参阅
metaObject()
- name()¶
- Return type:
字符串
返回与此
QMetaType
关联的类型名称,如果未找到匹配的类型,则返回空指针。返回的指针不得删除。另请参阅
这是一个重载函数。
如果
QMetaType
lhs
表示的类型与QMetaType
rhs
不同,则返回true
,否则返回false
。这是一个重载函数。
如果
QMetaType
lhs
表示的类型与QMetaType
rhs
相同,则返回true
,否则返回false
。- static registerNormalizedTypedef(normalizedTypeName, type)¶
- Parameters:
normalizedTypeName –
QByteArray
type –
QMetaType
- registerType()¶
将此
QMetaType
注册到类型注册表中,以便可以通过名称找到它,使用fromName()
。另请参阅
qRegisterMetaType()
- save(stream, data)¶
- Parameters:
stream –
QDataStream
data –
void
- Return type:
布尔
将
data
指向的对象写入给定的stream
。如果对象成功保存,则返回true
;否则返回false
。通常,您不需要直接调用此函数。相反,使用
QVariant
的operator<<()
,它依赖于save()来流式传输自定义类型。另请参阅
- static save(stream, type, data)
- Parameters:
stream –
QDataStream
type – int
data –
void
- Return type:
布尔
注意
此函数已弃用。
这是一个重载函数。
- sizeOf()¶
- Return type:
整数
返回类型的大小(以字节为单位)(即sizeof(T),其中T是此
QMetaType
实例所构建的实际类型)。此函数通常与
construct()
一起使用,以执行对类型使用的内存的低级管理。另请参阅
- static sizeOf(type)
- Parameters:
类型 – int
- Return type:
整数
注意
此函数已弃用。
返回给定
type
的大小,以字节为单位(即sizeof(T),其中T是由type
参数标识的实际类型)。此函数通常与
construct()
一起使用,以执行对类型使用的内存的低级管理。另请参阅
- static type(typeName)¶
- Parameters:
typeName –
QByteArray
- Return type:
整数
注意
此函数已弃用。
这是一个重载函数。
返回一个名为
typeName
的类型的句柄,如果没有这样的类型则返回0。另请参阅
- static type(typeName)
- Parameters:
typeName – str
- Return type:
整数
注意
此函数已弃用。
返回名为
typeName
的类型的句柄,如果没有这样的类型,则返回UnknownType
。另请参阅
返回给定
type
的标志。另请参阅
TypeFlags
- static typeName(type)¶
- Parameters:
类型 – int
- Return type:
字符串
注意
此函数已弃用。
返回与给定
typeId
关联的类型名称,如果未找到匹配的类型,则返回空指针。返回的指针不得删除。另请参阅
如果此元类型表示一个枚举,此方法返回一个与枚举底层类型具有相同符号和大小数值类的元类型。如果它表示一个
QFlags
类型,它返回Int
。在所有其他情况下,返回一个无效的QMetaType
。- static view(fromType, from, toType, to)¶
在预分配的空间中,在
from
处的fromType
类型的对象上创建一个可变视图,类型为toType
。如果转换成功,则返回true
,否则返回false。