PySide6.QtDBus.QDBusArgument¶
- class QDBusArgument¶
QDBusArgument类用于编组和解组 D-Bus 参数。更多…概要¶
方法¶
def
__init__()def
appendVariant()def
asVariant()def
atEnd()def
beginArray()def
beginMap()def
beginMapEntry()def
beginStructure()def
currentType()def
endArray()def
endMap()def
endMapEntry()def
endStructure()def
__lshift__()def
__rshift__()def
swap()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
该类用于通过D-Bus向远程应用程序发送参数并接收它们。D-Bus提供了一个可扩展的类型系统,基于一些基本类型及其组合。有关类型系统的更多信息,请参见Qt D-Bus类型系统页面。
QDBusArgument是 Qt D-Bus 类型系统中的核心类,提供了对基本类型进行编组和解组的函数。复合类型则通过将数组、字典或结构中的一个或多个基本类型关联起来创建。以下示例说明了如何使用Qt D-Bus类型系统构建包含整数和字符串的结构:
class MyStructure(): count = int() name = QString() # ... Q_DECLARE_METATYPE(MyStructure) # Marshall the MyStructure data into a D-Bus argument QDBusArgument operator<<(QDBusArgument argument, MyStructure myStruct) argument.beginStructure() argument << myStruct.count << myStruct.name argument.endStructure() return argument # Retrieve the MyStructure data from the D-Bus argument QDBusArgument operator>>(QDBusArgument argument, MyStructure myStruct) argument.beginStructure() argument >> myStruct.count >> myStruct.name argument.endStructure() return argument
该类型必须在使用
QDBusArgument之前通过qDBusRegisterMetaType()进行注册。因此,在程序的某个地方,您应该添加以下代码:qDBusRegisterMetaType<MyStructure>()
一旦注册,类型可以用于传出的方法调用(通过
call()放置),从注册对象发出的信号或来自远程应用程序的传入调用。需要注意的是,
operator<<和operator>>流函数在处理结构时,无论是读取还是写入(序列化和反序列化),都必须始终生成相同数量的条目,否则调用和信号可能会开始无声地失败。以下示例说明了在可能包含无效数据的类上下文中这种错误用法:
//bad code // Wrongly marshall the MyTime data into a D-Bus argument QDBusArgument &operator<<(QDBusArgument &argument, const MyTime &mytime) { argument.beginStructure(); if (mytime.isValid) argument << true << mytime.hour << mytime.minute << mytime.second; else argument << false; argument.endStructure(); return argument; }
在这个例子中,
operator<<和operator>>函数可能会产生不同数量的读/写操作。这可能会混淆 Qt D-Bus 类型系统,应避免这种情况。另请参阅
QDBusAbstractInterfaceQt D-Bus 类型系统 使用适配器qdbus_cast()- class ElementType¶
此枚举描述了参数所持有的元素类型。
常量
描述
QDBusArgument.BasicType
一个基本元素,由QVariant理解。以下类型被视为基本类型:bool, byte, short, ushort, int, uint, qint64, quint64, double, QString, QByteArray,
QDBusObjectPath,QDBusSignatureQDBusArgument.VariantType
变体元素 (
QDBusVariant)QDBusArgument.ArrayType
一个数组元素,通常由 QList
表示。注意:QByteArray 和关联映射不被视为数组,即使 D-Bus 协议将它们作为数组传输。 QDBusArgument.StructureType
由结构体表示的自定义类型,如QDateTime、QPoint等。
QDBusArgument.MapType
一个关联容器,如 QMap
或 QHash QDBusArgument.MapEntryType
关联容器中的一个条目:键和值共同构成一个映射条目类型。
QDBusArgument.UnknownType
类型未知或我们已经到达列表的末尾。
另请参阅
- __init__()¶
构造一个空的
QDBusArgument参数。一个空的
QDBusArgument对象不允许执行读取或写入操作。- __init__(other)
- Parameters:
其他 –
QDBusArgument
构造一个
QDBusArgument对象的other副本。因此,从这一点开始,两个对象将包含相同的状态。QDBusArguments 是显式共享的,因此,对任何一个副本的修改都会影响到另一个。
- appendVariant(v)¶
- Parameters:
v – 对象
- asVariant()¶
- Return type:
对象
以QVariant的形式返回当前参数。基本类型将被解码并在QVariant中返回,但对于复杂类型,此函数将在QVariant中返回一个
QDBusArgument对象。调用者有责任解码参数(例如,通过在其中调用asVariant())。例如,如果当前参数是INT32,此函数将返回一个类型为QMetaType::Int的QVariant。对于INT32数组,它将返回一个包含
QDBusArgument的QVariant。如果发生错误或没有更多的参数需要解码(即,我们处于参数列表的末尾),此函数将返回一个无效的QVariant。
另请参阅
- atEnd()¶
- Return type:
布尔
如果没有更多元素可以从这个
QDBusArgument中提取,则返回true。此函数通常用于从beginMap()和beginArray()返回的QDBusArgument对象中。- beginArray()¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
递归进入D-Bus数组以允许提取数组元素。
此函数通常用于
operator>>流操作符,如下例所示:# Extract a MyArray array of MyElement elements QDBusArgument operator>>(QDBusArgument argument, MyArray myArray) argument.beginArray() myArray.clear() while not argument.atEnd(): element = MyElement() argument >> element myArray.append(element) argument.endArray() return argument
如果您想要解组的类型是QList或任何采用一个模板参数的Qt容器类,您不需要为其声明
operator>>函数,因为Qt D-Bus提供了通用模板来完成数据解组的工作。同样适用于STL的序列容器,例如std::list,std::vector等。- beginArray(elementMetaType)
- Parameters:
elementMetaType –
QMetaType
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
打开一个新的D-Bus数组,适合追加元类型为
id的元素。此函数通常用于
operator<<流操作符,如下例所示:# Append an array of MyElement types QDBusArgument operator<<(QDBusArgument argument, MyArray myArray) argument.beginArray(qMetaTypeId<MyElement>()) for element in myArray: argument << element argument.endArray() return argument
如果你想封装的类型是QList或任何Qt的容器类,这些类接受一个模板参数,你不需要为它声明一个
operator<<函数,因为Qt D-Bus提供了通用模板来完成数据封装的工作。同样适用于STL的序列容器,如std::list,std::vector等。- beginArray(elementMetaTypeId)
- Parameters:
elementMetaTypeId – int
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
打开一个新的D-Bus数组,适合追加元类型为
id的元素。此函数通常用于
operator<<流操作符,如下例所示:# Append an array of MyElement types QDBusArgument operator<<(QDBusArgument argument, MyArray myArray) argument.beginArray(qMetaTypeId<MyElement>()) for element in myArray: argument << element argument.endArray() return argument
如果你想编组的类型是QList或任何接受一个模板参数的Qt容器类,你不需要为它声明一个
operator<<函数,因为Qt D-Bus提供了通用模板来完成数据编组的工作。同样适用于STL的序列容器,如std::list,std::vector等。- beginMap()¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
递归进入D-Bus映射以允许提取映射的元素。
此函数通常用于
operator>>流操作符,如下例所示:# Extract a MyDictionary map that associates integers to MyElement items QDBusArgument operator>>(QDBusArgument argument, MyDictionary myDict) argument.beginMap() myDict.clear() while not argument.atEnd(): key = int() value = MyElement() argument.beginMapEntry() argument >> key >> value argument.endMapEntry() myDict.insert(key, value) argument.endMap() return argument
如果您想要反序列化的类型是QMap或QHash,您不需要为其声明
operator>>函数,因为Qt D-Bus提供了通用模板来完成数据的反序列化工作。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
打开一个新的D-Bus映射,适合追加元素。映射是将一个条目(键)与另一个条目(值)关联起来的容器,例如Qt的QMap或QHash。映射的键和值元类型的id必须分别在
keyMetaType和valueMetaType中传递。此函数通常用于
operator<<流操作符,如下例所示:# Append a dictionary that associates ints to MyValue types QDBusArgument operator<<(QDBusArgument argument, MyDictionary myDict) argument.beginMap(QMetaType.fromType<int>(), QMetaType.fromType<MyValue>()) MyDictionary.const_iterator i for i in myDict: argument.beginMapEntry() argument << i.key() << i.value() argument.endMapEntry() argument.endMap() return argument
通常你不需要为关联容器如QHash或std::map提供
operator<<或operator>>函数,因为Qt D-Bus提供了通用模板来处理数据的编组工作。- beginMap(keyMetaTypeId, valueMetaTypeId)
- Parameters:
keyMetaTypeId – int
valueMetaTypeId – int
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
打开一个新的D-Bus映射,适合追加元素。映射是容器,将一个条目(键)与另一个条目(值)关联起来,例如Qt的QMap或QHash。映射的键和值元类型的id必须分别在
keyMetaType和valueMetaType中传递。此函数通常用于
operator<<流操作符,如下例所示:# Append a dictionary that associates ints to MyValue types QDBusArgument operator<<(QDBusArgument argument, MyDictionary myDict) argument.beginMap(QMetaType.fromType<int>(), QMetaType.fromType<MyValue>()) MyDictionary.const_iterator i for i in myDict: argument.beginMapEntry() argument << i.key() << i.value() argument.endMapEntry() argument.endMap() return argument
通常你不需要为关联容器如QHash或std::map提供
operator<<或operator>>函数,因为Qt D-Bus提供了通用模板来处理数据的编组工作。- beginMapEntry()¶
递归进入D-Bus映射条目以允许提取键值对。
参见
beginMap()以了解此函数通常如何使用。另请参阅
- beginStructure()¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
打开一个适合提取元素的D-Bus结构。
此函数通常用于
operator>>流操作符,如下例所示:QDBusArgument operator>>(QDBusArgument argument, MyStructure myStruct) argument.beginStructure() argument >> myStruct.member1 >> myStruct.member2 >> myStruct.member3 argument.endStructure() return argument
- currentSignature()¶
- Return type:
字符串
- currentType()¶
- Return type:
返回当前元素类型的分类。如果解码类型时发生错误或如果我们处于参数的末尾,此函数将返回
UnknownType。此函数仅在解组参数时有意义。如果在组编时使用,它将始终返回
UnknownType。- endArray()¶
关闭D-Bus数组并允许在数组之后提取下一个元素。
另请参阅
- endMap()¶
关闭D-Bus映射并允许在映射后提取下一个元素。
另请参阅
- endMapEntry()¶
关闭D-Bus映射条目并允许提取映射上的下一个元素。
另请参阅
- endStructure()¶
关闭D-Bus结构并允许在结构之后提取下一个元素。
另请参阅
- __lshift__(arg)¶
- Parameters:
arg – 布尔值
- Return type:
这是一个重载函数。
将类型为
BOOLEAN的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg –
QByteArray- Return type:
这是一个重载函数。
将
arg给出的QByteArray作为ARRAY of BYTE附加到D-Bus流中。QStringList 和 QByteArray 是唯一两种由
QDBusArgument直接支持的非原始类型,因为它们在 Qt 应用程序中广泛使用。Qt D-Bus 通过复合类型支持其他数组。
- __lshift__(arg)
- Parameters:
arg –
QDBusObjectPath- Return type:
- __lshift__(arg)
- Parameters:
arg –
QDBusSignature- Return type:
- __lshift__(arg)
- Parameters:
arg –
QDBusUnixFileDescriptor- Return type:
- __lshift__(arg)
- Parameters:
arg –
QDBusVariant- Return type:
这是一个重载函数。
将类型为
VARIANT的原始值arg附加到 D-Bus 流中。D-Bus 变体类型可以包含任何类型,包括其他变体。它类似于 Qt 的 QVariant 类型。
- __lshift__(date)
- Parameters:
日期 –
QDate- Return type:
- __lshift__(dt)
- Parameters:
dt –
QDateTime- Return type:
- __lshift__(map)
- Parameters:
map – 字典,键类型为 .QString,值类型为 QVariant。
- Return type:
- __lshift__(line)
- Parameters:
线 –
QLine- Return type:
- __lshift__(line)
- Parameters:
线 –
QLineF- Return type:
- __lshift__(list)
- Parameters:
list – QVariant 的列表
- Return type:
- __lshift__(map)
- Parameters:
map – 字典,键类型为 .QString,值类型为 QVariant。
- Return type:
- __lshift__(pt)
- Parameters:
pt –
QPoint- Return type:
- __lshift__(pt)
- Parameters:
pt –
QPointF- Return type:
- __lshift__(rect)
- Parameters:
rect –
QRect- Return type:
- __lshift__(rect)
- Parameters:
矩形 –
QRectF- Return type:
- __lshift__(size)
- Parameters:
大小 –
QSize- Return type:
- __lshift__(size)
- Parameters:
大小 –
QSizeF- Return type:
- __lshift__(arg)
- Parameters:
arg – 字符串
- Return type:
这是一个重载函数。
将类型为
STRING(Unicode 字符串)的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 字符串列表
- Return type:
这是一个重载函数。
将
arg给出的QStringList作为ARRAY of STRING附加到D-Bus流中。QStringList 和 QByteArray 是唯一两种由
QDBusArgument直接支持的非原始类型,因为它们在 Qt 应用程序中广泛使用。Qt D-Bus 通过复合类型支持其他数组。
- __lshift__(time)
- Parameters:
时间 –
QTime- Return type:
- __lshift__(arg)
- Parameters:
arg – 浮点数
- Return type:
这是一个重载函数。
将类型为
DOUBLE(双精度浮点数)的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
INT32的原始值arg附加到D-Bus流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
INT64的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
UINT64的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
INT16的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
将类型为
BYTE的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
UINT32的原始值arg附加到 D-Bus 流中。- __lshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
将类型为
UINT16的原始值arg附加到 D-Bus 流中。- __rshift__(arg)¶
- Parameters:
arg –
QByteArray- Return type:
这是一个重载函数。
从D-Bus流中提取一个字节数组,并将其作为QByteArray返回。
QStringList 和 QByteArray 是唯一两种由
QDBusArgument直接支持的非原始类型,因为它们在 Qt 应用程序中广泛使用。Qt D-Bus 通过复合类型支持其他数组。
- __rshift__(arg)
- Parameters:
arg –
QDBusObjectPath- Return type:
- __rshift__(arg)
- Parameters:
arg –
QDBusSignature- Return type:
- __rshift__(arg)
- Parameters:
arg –
QDBusUnixFileDescriptor- Return type:
- __rshift__(arg)
- Parameters:
arg –
QDBusVariant- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
VARIANT的D-Bus原始参数。D-Bus 变体类型可以包含任何类型,包括其他变体。它类似于 Qt 的 QVariant 类型。
如果变体包含的类型不被
QDBusArgument直接支持,返回的QDBusVariant的值将包含另一个QDBusArgument。您有责任进一步将其解组为另一种类型。- __rshift__(date)
- Parameters:
日期 –
QDate- Return type:
- __rshift__(dt)
- Parameters:
dt –
QDateTime- Return type:
- __rshift__(line)
- Parameters:
线 –
QLine- Return type:
- __rshift__(line)
- Parameters:
线 –
QLineF- Return type:
- __rshift__(pt)
- Parameters:
pt –
QPoint- Return type:
- __rshift__(pt)
- Parameters:
pt –
QPointF- Return type:
- __rshift__(rect)
- Parameters:
rect –
QRect- Return type:
- __rshift__(rect)
- Parameters:
矩形 –
QRectF- Return type:
- __rshift__(size)
- Parameters:
大小 –
QSize- Return type:
- __rshift__(size)
- Parameters:
大小 –
QSizeF- Return type:
- __rshift__(arg)
- Parameters:
arg – 字符串
- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
STRING(Unicode字符串)的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg – 字符串列表
- Return type:
这是一个重载函数。
从D-Bus流中提取字符串数组并将其作为QStringList返回。
QStringList 和 QByteArray 是唯一两种由
QDBusArgument直接支持的非原始类型,因为它们在 Qt 应用程序中广泛使用。Qt D-Bus 通过复合类型支持其他数组。
- __rshift__(time)
- Parameters:
时间 –
QTime- Return type:
- __rshift__(v)
- Parameters:
v – 对象
- Return type:
- __rshift__(arg)
- Parameters:
arg – 布尔值
- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
BOOLEAN的D-Bus基本参数。- __rshift__(arg)
- Parameters:
arg –
double- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
DOUBLE(双精度浮点数)的D-Bus基本参数。- __rshift__(arg)
- Parameters:
arg – 整数
- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
INT32的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg –
qlonglong- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
INT64的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg –
qulonglong- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
UINT64的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg –
short- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
INT16的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg – 字符串
- Return type:
从D-Bus流中提取一个类型为
BYTE的D-Bus原始参数,并将其放入arg中。- __rshift__(arg)
- Parameters:
arg –
uint- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
UINT32的D-Bus原始参数。- __rshift__(arg)
- Parameters:
arg –
ushort- Return type:
这是一个重载函数。
从D-Bus流中提取一个类型为
UINT16的D-Bus基本参数。- swap(other)¶
- Parameters:
其他 –
QDBusArgument
将此
QDBusArgument实例与other交换。