PySide6.QtCore.QDataStream¶
- class QDataStream¶
QDataStream
类提供了将二进制数据序列化到QIODevice
的功能。更多…概要¶
方法¶
def
__init__()
def
atEnd()
def
byteOrder()
def
device()
def
__lshift__()
def
__rshift__()
def
readBool()
def
readBytes()
def
readDouble()
def
readFloat()
def
readInt16()
def
readInt32()
def
readInt64()
def
readInt8()
def
readQChar()
def
readQString()
def
readQVariant()
def
readRawData()
def
readString()
def
readUInt16()
def
readUInt32()
def
readUInt64()
def
readUInt8()
def
resetStatus()
def
setByteOrder()
def
setDevice()
def
setStatus()
def
setVersion()
def
skipRawData()
def
status()
def
version()
def
writeBool()
def
writeBytes()
def
writeDouble()
def
writeFloat()
def
writeInt16()
def
writeInt32()
def
writeInt64()
def
writeInt8()
def
writeQChar()
def
writeQString()
def
writeQVariant()
def
writeRawData()
def
writeString()
def
writeUInt16()
def
writeUInt32()
def
writeUInt64()
def
writeUInt8()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
数据流是一种编码信息的二进制流,它100%独立于主机的操作系统、CPU或字节顺序。例如,由Windows下的PC写入的数据流可以由运行Solaris的Sun SPARC读取。
你也可以使用数据流来读取/写入
原始 未编码 二进制 数据
。如果你想要一个“解析”输入流,请参见QTextStream
。QDataStream
类实现了 C++ 基本数据类型的序列化,如char
、short
、int
、char *
等。更复杂数据的序列化是通过将数据分解为基本单元来完成的。数据流与
QIODevice
紧密合作。一个QIODevice
代表一个可以从中读取数据和写入数据的输入/输出介质。QFile
类是I/O设备的一个例子。示例(将二进制数据写入流):
file = QFile("file.dat") file.open(QIODevice.WriteOnly) QDataStream out(file) # we will serialize the data into the file out << QString("the answer is") # serialize a string out << (qint32)42 # serialize an integer
示例(从流中读取二进制数据):
file = QFile("file.dat") file.open(QIODevice.ReadOnly) QDataStream in(file) # read the data serialized from the file str = QString() a = qint32() in >> str >> a # extract "the answer is" and 42
写入流的每个项目都以预定义的二进制格式写入,该格式根据项目的类型而变化。支持的Qt类型包括QBrush、QColor、
QDateTime
、QFont、QPixmap、QString
、QVariant
等许多其他类型。有关支持数据流的所有Qt类型的完整列表,请参见序列化Qt数据类型。对于整数,最好始终将其转换为Qt整数类型进行写入,并读取回相同的Qt整数类型。这确保您获得所需大小的整数,并使您免受编译器和平台差异的影响。
枚举可以通过
QDataStream
进行序列化,而无需手动定义流操作符。枚举类使用声明的大小进行序列化。初始的I/O设备通常在构造函数中设置,但可以通过
setDevice()
进行更改。如果你已经到达数据的末尾(或者没有设置I/O设备),atEnd()
将返回true。序列化容器和字符串¶
序列化格式首先是一个长度指示符,然后是
l
字节的数据。如果版本小于6.7或元素数量小于0xfffffffe(2^32 -2),则长度指示符是一个quint32。否则,会有一个扩展值0xfffffffe,后面跟着一个quint64表示实际值。此外,对于支持isNull()的容器,它被编码为一个所有位都设置的quint32,没有数据。举个例子,如果字符串的大小适合32位,
char *
字符串会被写成一个32位整数,等于字符串的长度,包括'\0'字节,后面跟着字符串的所有字符,包括'\0'字节。如果字符串的大小更大,则写入值0xffffffffe作为扩展大小的标记,后面跟着64位的实际大小。当读取char *
字符串时,首先读取4个字节。如果该值不等于0xffffffffe(扩展大小的标记),则这4个字节被视为字符串的32位大小。否则,读取接下来的8个字节并将其视为字符串的64位大小。然后,读取char *
字符串的所有字符,包括'\0'终止符。版本控制¶
QDataStream
的二进制格式自 Qt 1.0 以来已经发展,并且可能会继续发展以反映 Qt 中的变化。在输入或输出复杂类型时,确保使用相同版本的流(version()
)进行读取和写入非常重要。如果您需要向前和向后兼容性,可以在应用程序中硬编码版本号:stream.setVersion(QDataStream.Qt_4_0)
如果你正在生成一个新的二进制数据格式,例如你的应用程序创建的文档的文件格式,你可以使用
QDataStream
以可移植的格式写入数据。通常,你会写入一个包含魔数字符串和版本号的简短头部,以便为未来的扩展留出空间。例如:file = QFile("file.xxx") file.open(QIODevice.WriteOnly) out = QDataStream(file) # Write a header with a "magic number" and a version out << (quint32)0xA0B0C0D0 out << (qint32)123 out.setVersion(QDataStream.Qt_4_0) # Write the data out << lots_of_interesting_data
然后使用以下方式读取:
file = QFile("file.xxx") file.open(QIODevice.ReadOnly) in = QDataStream(file) # Read and check the header magic = quint32() in >> magic if magic != 0xA0B0C0D0: return XXX_BAD_FILE_FORMAT # Read the version version = qint32() in >> version if version < 100: return XXX_BAD_FILE_TOO_OLD if version > 123: return XXX_BAD_FILE_TOO_NEW if version <= 110: in.setVersion(QDataStream.Qt_3_2) else: in.setVersion(QDataStream.Qt_4_0) # Read the data in >> lots_of_interesting_data if version >= 120: in >> data_new_in_XXX_version_1_2 in >> other_interesting_data
您可以选择在序列化数据时使用哪种字节顺序。默认设置为大端序(最高有效位优先)。将其更改为小端序会破坏可移植性(除非读取器也改为小端序)。除非有特殊要求,否则我们建议保留此设置。
读取和写入原始二进制数据¶
您可能希望直接向/从数据流中读取/写入自己的原始二进制数据。可以使用
readRawData()
将数据从流中读取到预分配的char *
中。同样,可以使用writeRawData()
将数据写入流中。请注意,数据的任何编码/解码必须由您自己完成。类似的一对函数是
readBytes()
和writeBytes()
。它们与它们的原始对应函数的不同之处如下:readBytes()
读取一个 quint32,该值被视为要读取的数据的长度,然后将该数量的字节读入预分配的char *
;writeBytes()
写入一个包含数据长度的 quint32,然后是数据。请注意,数据的任何编码/解码(除了长度 quint32)必须由您完成。读取和写入Qt集合类¶
Qt容器类也可以序列化到
QDataStream
。这些包括QList
、QSet
、QHash
和QMap
。流操作符被声明为类的非成员。读取和写入其他Qt类¶
除了这里记录的重载流操作符之外,任何你可能想要序列化到
QDataStream
的Qt类都会有适当的流操作符声明为类的非成员:operator<< = QDataStream(QDataStream , QXxx ) operator>> = QDataStream(QDataStream , QXxx )
例如,以下是声明为QImage类非成员的流操作符:
operator<< = QDataStream(QDataStream stream, QImage image) operator>> = QDataStream(QDataStream stream, QImage image)
要查看您喜欢的Qt类是否定义了类似的流操作符,请检查类文档页面的相关非成员部分。
使用读取事务¶
当数据流在异步设备上操作时,数据块可以在任意时间点到达。
QDataStream
类实现了一种事务机制,该机制提供了使用一系列流操作符原子地读取数据的能力。例如,您可以通过在连接到 readyRead() 信号的槽中使用事务来处理来自套接字的不完整读取:in.startTransaction() str = QString() a = qint32() in >> str >> a # try to read packet atomically if not in.commitTransaction(): return # wait for more data
如果没有接收到完整的数据包,此代码将流恢复到初始位置,之后需要等待更多数据到达。
腐败与安全¶
QDataStream
无法抵御损坏的数据输入,因此不应在安全敏感的情况下使用,即使在使用事务时也是如此。事务将帮助确定当前是否可以使用异步设备上当前可用的数据解码有效输入,但会假设可用的数据是正确形成的。此外,许多
QDataStream
解封操作符将根据流中的信息分配内存。这些操作符不会验证请求的内存量是否合理,或者是否与流中可用的数据量兼容(例如:解封QByteArray
或QString
可能会看到请求分配数GB的数据)。QDataStream
不应该用于来源不可信的内容。应用程序应设计为仅尝试解码来源至少与应用程序本身或其插件一样可信的流。另请参阅
QTextStream
QVariant
- class Version¶
(继承
enum.IntEnum
) 此枚举为数据序列化格式版本号提供了符号化的同义词。常量
描述
QDataStream.Qt_1_0
版本 1 (Qt 1.x)
QDataStream.Qt_2_0
版本 2 (Qt 2.0)
QDataStream.Qt_2_1
版本 3 (Qt 2.1, 2.2, 2.3)
QDataStream.Qt_3_0
版本 4 (Qt 3.0)
QDataStream.Qt_3_1
版本 5 (Qt 3.1, 3.2)
QDataStream.Qt_3_3
版本 6 (Qt 3.3)
QDataStream.Qt_4_0
版本 7 (Qt 4.0, Qt 4.1)
QDataStream.Qt_4_1
版本 7 (Qt 4.0, Qt 4.1)
QDataStream.Qt_4_2
版本 8 (Qt 4.2)
QDataStream.Qt_4_3
版本 9 (Qt 4.3)
QDataStream.Qt_4_4
版本 10 (Qt 4.4)
QDataStream.Qt_4_5
版本 11 (Qt 4.5)
QDataStream.Qt_4_6
版本 12 (Qt 4.6, Qt 4.7, Qt 4.8)
QDataStream.Qt_4_7
与Qt_4_6相同。
QDataStream.Qt_4_8
与Qt_4_6相同。
QDataStream.Qt_4_9
与Qt_4_6相同。
QDataStream.Qt_5_0
版本 13 (Qt 5.0)
QDataStream.Qt_5_1
版本 14 (Qt 5.1)
QDataStream.Qt_5_2
版本 15 (Qt 5.2)
QDataStream.Qt_5_3
与Qt_5_2相同
QDataStream.Qt_5_4
版本 16 (Qt 5.4)
QDataStream.Qt_5_5
与Qt_5_4相同
QDataStream.Qt_5_6
版本 17 (Qt 5.6)
QDataStream.Qt_5_7
与Qt_5_6相同
QDataStream.Qt_5_8
与Qt_5_6相同
QDataStream.Qt_5_9
与Qt_5_6相同
QDataStream.Qt_5_10
与Qt_5_6相同
QDataStream.Qt_5_11
与Qt_5_6相同
QDataStream.Qt_5_12
版本 18 (Qt 5.12)
QDataStream.Qt_5_13
版本 19 (Qt 5.13)
QDataStream.Qt_5_14
与Qt_5_13相同
QDataStream.Qt_5_15
与Qt_5_13相同
QDataStream.Qt_6_0
版本 20 (Qt 6.0)
QDataStream.Qt_6_1
与Qt_6_0相同
QDataStream.Qt_6_2
与Qt_6_0相同
QDataStream.Qt_6_3
与Qt_6_0相同
QDataStream.Qt_6_4
与Qt_6_0相同
QDataStream.Qt_6_5
与Qt_6_0相同
QDataStream.Qt_6_6
版本 21 (Qt 6.6)
QDataStream.Qt_6_7
版本 22 (Qt 6.7)
QDataStream.Qt_6_8
与Qt_6_7相同
另请参阅
- class ByteOrder¶
用于读取/写入数据的字节顺序。
常量
描述
QDataStream.BigEndian
最高有效字节优先(默认)
QDataStream.LittleEndian
最低有效字节优先
- class Status¶
此枚举描述了数据流的当前状态。
常量
描述
QDataStream.Ok
数据流运行正常。
QDataStream.ReadPastEnd
数据流已经读取到基础设备数据的末尾。
QDataStream.ReadCorruptData
数据流读取了损坏的数据。
QDataStream.WriteFailed
数据流无法写入底层设备。
QDataStream.SizeLimitExceeded
数据流无法读取或写入数据,因为其大小超过了当前平台支持的限制。例如,在32位平台上尝试读取超过2 GiB的数据时可能会发生这种情况。
- class FloatingPointPrecision¶
用于读取/写入数据的浮点数精度。只有在数据流版本为
Qt_4_6
或更高时才会生效。警告
浮点精度必须设置为写入数据流的对象和读取数据流的对象相同的值。
常量
描述
QDataStream.SinglePrecision
数据流中的所有浮点数具有32位精度。
QDataStream.DoublePrecision
数据流中的所有浮点数具有64位精度。
在版本4.6中添加。
- __init__()¶
构建一个没有I/O设备的数据流。
另请参阅
- __init__(d)
- Parameters:
d –
QIODevice
构建一个使用I/O设备
d
的数据流。另请参阅
- __init__(a)
- Parameters:
a –
QByteArray
构造一个在字节数组
a
上操作的只读数据流。如果你想写入字节数组,请使用QDataStream
(QByteArray
*, int)。由于
QByteArray
不是QIODevice
的子类,内部创建了一个QBuffer
来包装字节数组。- __init__(a, flags)
- Parameters:
a –
QByteArray
flags –
OpenModeFlag
的组合
构建一个在字节数组
a
上操作的数据流。mode
描述了设备的使用方式。或者,如果您只想从字节数组中读取,可以使用
QDataStream
(constQByteArray
&)。由于
QByteArray
不是QIODevice
的子类,内部会创建一个QBuffer
来包装字节数组。- abortTransaction()¶
中止读取事务。
此函数通常用于在高级协议错误或流同步丢失后丢弃事务。
如果在内部事务上调用,中止操作将委托给最外层的事务,随后启动的内部事务将被迫失败。
对于最外层的事务,丢弃流的恢复点和任何内部重复的数据。不会影响流的当前读取位置。
设置数据流的状态为
读取损坏数据
.
- atEnd()¶
- Return type:
布尔
如果I/O设备已达到结束位置(流的末尾或文件的末尾)或未设置I/O设备,则返回
true
;否则返回false
。另请参阅
返回当前的字节顺序设置——
BigEndian
或LittleEndian
。另请参阅
- commitTransaction()¶
- Return type:
布尔
完成一个读取事务。如果在事务期间没有发生读取错误,则返回
true
;否则返回false
。如果在内部事务上调用,提交将被推迟,直到最外层的 commitTransaction()、
rollbackTransaction()
或abortTransaction()
调用发生。否则,如果流状态指示读取超过数据末尾,此函数将流数据恢复到
startTransaction()
调用的点。当这种情况发生时,您需要等待更多数据到达,然后开始一个新的事务。如果数据流读取了损坏的数据或任何内部事务被中止,此函数将中止事务。返回当前设置的I/O设备,如果当前没有设置设备,则返回
None
。另请参阅
- floatingPointPrecision()¶
- Return type:
返回数据流的浮点精度。
- isDeviceTransactionStarted()¶
- Return type:
布尔
- __lshift__(st)¶
- Parameters:
st –
QCborSimpleType
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QChar
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QDate
- Return type:
- __lshift__(attr)
- Parameters:
attr –
属性
- Return type:
- __lshift__(combination)
- Parameters:
组合 –
QKeyCombination
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QTime
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QVector2D
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QVector3D
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QVector4D
- Return type:
- __lshift__(i)
- Parameters:
i – 整数
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QBitArray
- Return type:
- __lshift__(uuid)
- Parameters:
uuid –
QBluetoothUuid
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QBrush
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QByteArray
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QCanBusFrame
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QCborArray
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QCborMap
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QCborValue
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QColor
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QColorSpace
- Return type:
- __lshift__(cursor)
- Parameters:
光标 –
QCursor
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QDateTime
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QEasingCurve
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QFont
- Return type:
- __lshift__(monitor)
- Parameters:
监控 –
QGeoAreaMonitorInfo
- Return type:
- __lshift__(circle)
- Parameters:
圆形 –
QGeoCircle
- Return type:
- __lshift__(coordinate)
- Parameters:
坐标 –
QGeoCoordinate
- Return type:
- __lshift__(path)
- Parameters:
路径 –
QGeoPath
- Return type:
- __lshift__(polygon)
- Parameters:
多边形 –
QGeoPolygon
- Return type:
- __lshift__(info)
- Parameters:
信息 –
QGeoPositionInfo
- Return type:
- __lshift__(rectangle)
- Parameters:
矩形 –
QGeoRectangle
- Return type:
- __lshift__(info)
- Parameters:
信息 –
QGeoSatelliteInfo
- Return type:
- __lshift__(shape)
- Parameters:
形状 –
QGeoShape
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QHostAddress
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QIcon
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QImage
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QJSValue
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QJsonArray
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QJsonDocument
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QJsonObject
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QJsonValue
- Return type:
- __lshift__(ks)
- Parameters:
ks –
QKeySequence
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QLine
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QLineF
- Return type:
- __lshift__(item)
- Parameters:
项目 –
QListWidgetItem
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QLocale
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QMargins
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QMarginsF
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QMatrix4x4
- Return type:
- __lshift__(pdu)
- Parameters:
pdu –
QModbusPdu
- Return type:
- __lshift__(pdu)
- Parameters:
pdu –
QModbusRequest
- Return type:
- __lshift__(pdu)
- Parameters:
pdu –
QModbusResponse
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QMqttTopicFilter
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QMqttTopicName
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QNetworkCacheMetaData
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPageRanges
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPainterPath
- Return type:
- __lshift__(p)
- Parameters:
p –
QPalette
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPen
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPicture
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPixmap
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPoint
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QPointF
- Return type:
- __lshift__(polygon)
- Parameters:
多边形 –
QPolygon
- Return type:
- __lshift__(array)
- Parameters:
数组 –
QPolygonF
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QQuaternion
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QRect
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QRectF
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QRegion
- Return type:
- __lshift__(re)
- Parameters:
re –
QRegularExpression
- Return type:
- __lshift__(info)
- Parameters:
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QSize
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QSizeF
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QSizePolicy
- Return type:
- __lshift__(item)
- Parameters:
项目 –
QStandardItem
- Return type:
- __lshift__(arg__1)
- Parameters:
arg__1 – str
- __lshift__(arg__2)
- Parameters:
arg__2 – 字符串
- Return type:
- __lshift__(item)
- Parameters:
项目 –
QTableWidgetItem
- Return type:
- __lshift__(tz)
- Parameters:
时区 –
QTimeZone
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QTransform
- Return type:
- __lshift__(item)
- Parameters:
项目 –
QTreeWidgetItem
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QUrl
- Return type:
- __lshift__(arg__2)
- Parameters:
arg__2 –
QUuid
- Return type:
- __lshift__(p)
- Parameters:
p – 对象
- Return type:
- __lshift__(version)
- Parameters:
版本 –
QVersionNumber
- Return type:
- __lshift__(voice)
- Parameters:
语音 –
QVoice
- Return type:
- __lshift__(history)
- Parameters:
历史 –
QWebEngineHistory
- Return type:
- __rshift__(uuid)
- Parameters:
uuid –
QBluetoothUuid
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QBrush
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QByteArray
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QCanBusFrame
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QCborArray
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QCborMap
- Return type:
- __rshift__(st)
- Parameters:
st –
QCborSimpleType
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QCborValue
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QChar
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QColor
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QColorSpace
- Return type:
- __rshift__(cursor)
- Parameters:
光标 –
QCursor
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QDate
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QDateTime
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QEasingCurve
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QFont
- Return type:
- __rshift__(monitor)
- Parameters:
监控 –
QGeoAreaMonitorInfo
- Return type:
- __rshift__(circle)
- Parameters:
圆形 –
QGeoCircle
- Return type:
- __rshift__(coordinate)
- Parameters:
坐标 –
QGeoCoordinate
- Return type:
- __rshift__(path)
- Parameters:
路径 –
QGeoPath
- Return type:
- __rshift__(polygon)
- Parameters:
多边形 –
QGeoPolygon
- Return type:
- __rshift__(info)
- Parameters:
信息 –
QGeoPositionInfo
- Return type:
- __rshift__(attr)
- Parameters:
attr –
属性
- Return type:
- __rshift__(rectangle)
- Parameters:
矩形 –
QGeoRectangle
- Return type:
- __rshift__(info)
- Parameters:
信息 –
QGeoSatelliteInfo
- Return type:
- __rshift__(shape)
- Parameters:
形状 –
QGeoShape
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QHostAddress
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QIcon
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QImage
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QJSValue
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QJsonArray
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QJsonDocument
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QJsonObject
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QJsonValue
- Return type:
- __rshift__(combination)
- Parameters:
组合 –
QKeyCombination
- Return type:
- __rshift__(ks)
- Parameters:
ks –
QKeySequence
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QLine
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QLineF
- Return type:
- __rshift__(item)
- Parameters:
项目 –
QListWidgetItem
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QLocale
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QMargins
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QMarginsF
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QMatrix4x4
- Return type:
- __rshift__(code)
- Parameters:
代码 –
FunctionCode
- Return type:
- __rshift__(pdu)
- Parameters:
pdu –
QModbusRequest
- Return type:
- __rshift__(pdu)
- Parameters:
pdu –
QModbusResponse
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QMqttTopicFilter
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QMqttTopicName
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QNetworkCacheMetaData
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPageRanges
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPainterPath
- Return type:
- __rshift__(p)
- Parameters:
p –
QPalette
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPen
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPicture
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPixmap
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPoint
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QPointF
- Return type:
- __rshift__(polygon)
- Parameters:
多边形 –
QPolygon
- Return type:
- __rshift__(array)
- Parameters:
数组 –
QPolygonF
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QQuaternion
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QRect
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QRectF
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QRegion
- Return type:
- __rshift__(re)
- Parameters:
re –
QRegularExpression
- Return type:
- __rshift__(info)
- Parameters:
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QSize
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QSizeF
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QSizePolicy
- Return type:
- __rshift__(item)
- Parameters:
项目 –
QStandardItem
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 – 字符串
- Return type:
- __rshift__(item)
- Parameters:
项目 –
QTableWidgetItem
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QTime
- Return type:
- __rshift__(tz)
- Parameters:
时区 –
QTimeZone
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QTransform
- Return type:
- __rshift__(item)
- Parameters:
项目 –
QTreeWidgetItem
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QUrl
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QUuid
- Return type:
- __rshift__(p)
- Parameters:
p – 对象
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QVector2D
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QVector3D
- Return type:
- __rshift__(arg__2)
- Parameters:
arg__2 –
QVector4D
- Return type:
- __rshift__(version)
- Parameters:
版本 –
QVersionNumber
- Return type:
- __rshift__(voice)
- Parameters:
语音 –
QVoice
- Return type:
- __rshift__(history)
- Parameters:
历史记录 –
QWebEngineHistory
- Return type:
- __rshift__(i)
- Parameters:
i – 布尔值
- Return type:
从流中读取一个布尔值到
i
。返回对流的引用。- __rshift__(i)
- Parameters:
i –
char
- Return type:
- readBool()¶
- Return type:
布尔
- readBytes(len)¶
- Parameters:
len –
qint64
- Return type:
PyTuple
- readDouble()¶
- Return type:
浮点数
- readFloat()¶
- Return type:
浮点数
- readInt16()¶
- Return type:
整数
- readInt32()¶
- Return type:
整数
- readInt64()¶
- Return type:
整数
- readInt8()¶
- Return type:
整数
- readQChar()¶
- Return type:
QChar
- readQString()¶
- Return type:
字符串
- readQStringList()¶
- Return type:
字符串列表
- readQVariant()¶
- Return type:
对象
- readRawData(len)¶
- Parameters:
len – int
- Return type:
整数
从流中最多读取
len
字节到s
中,并返回读取的字节数。如果发生错误,此函数返回 -1。缓冲区
s
必须预先分配。数据不会被解码。- readString()¶
- Return type:
字符串
- readUInt16()¶
- Return type:
整数
- readUInt32()¶
- Return type:
整数
- readUInt64()¶
- Return type:
整数
- readUInt8()¶
- Return type:
整数
- resetStatus()¶
重置数据流的状态。
另请参阅
- rollbackTransaction()¶
回滚一个读取事务。
此函数通常用于在提交事务之前检测到不完整读取时回滚事务。
如果在内部事务上调用,回滚将委托给最外层的事务,随后启动的内部事务将被迫失败。
对于最外层的事务,将流数据恢复到
startTransaction()
调用的点。如果数据流读取了损坏的数据或任何内部事务被中止,此函数将中止事务。如果前面的流操作成功,将数据流的状态设置为
读取超过末尾
.
设置序列化字节顺序为
bo
。bo
参数可以是BigEndian
或LittleEndian
。默认设置为大端序。除非有特殊要求,否则我们建议保留此设置。
另请参阅
void QDataStream::setDevice(
QIODevice
*d)将I/O设备设置为
d
,可以是None
以取消设置当前I/O设备。另请参阅
- setFloatingPointPrecision(precision)¶
- Parameters:
设置数据流的浮点精度为
precision
。如果浮点精度为DoublePrecision
且数据流版本为Qt_4_6
或更高,所有浮点数将以64位精度写入和读取。如果浮点精度为SinglePrecision
且版本为Qt_4_6
或更高,所有浮点数将以32位精度写入和读取。对于
Qt_4_6
之前的版本,数据流中浮点数的精度取决于调用的流操作符。默认是
DoublePrecision
。请注意,此属性不会影响
qfloat16
实例的序列化或反序列化。将数据流的状态设置为给定的
status
。在调用
resetStatus()
之前,后续对setStatus()的调用将被忽略。另请参阅
- setVersion(v)¶
- Parameters:
v – 整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
设置数据序列化格式的版本号为
v
,这是Version
枚举的一个值。如果您使用的是当前版本的Qt,您不必设置版本,但对于您自己的自定义二进制格式,我们建议您这样做;请参阅详细描述中的
版本控制
。为了适应新功能,某些Qt类的数据流序列化格式在某些Qt版本中发生了变化。如果你想读取由早期版本的Qt创建的数据,或者编写可以由使用早期版本Qt编译的程序读取的数据,请使用此函数来修改
QDataStream
使用的序列化格式。Version
枚举为不同版本的 Qt 提供了符号常量。例如:- skipRawData(len)¶
- Parameters:
len – int
- Return type:
整数
跳过设备中的
len
字节。返回实际跳过的字节数,如果出错则返回-1。这相当于在长度为
len
的缓冲区上调用readRawData()
并忽略缓冲区。另请参阅
- startTransaction()¶
在流上启动一个新的读取事务。
定义读取操作序列中的一个可恢复点。对于顺序设备,读取的数据将在内部复制,以允许在不完全读取的情况下进行恢复。对于随机访问设备,此函数保存流的当前位置。调用
commitTransaction()
、rollbackTransaction()
或abortTransaction()
来完成当前事务。一旦事务开始,后续对此函数的调用将使事务递归。内部事务充当最外层事务的代理(即,向最外层事务报告读取操作的状态,最外层事务可以恢复流的位置)。
注意
不支持恢复到嵌套的startTransaction()调用的点。
当在事务中发生错误时(包括内部事务失败),从数据流的读取将被暂停(所有后续的读取操作将返回空/零值),并且后续的内部事务将被迫失败。启动一个新的最外层事务可以从这种状态中恢复。这种行为使得不需要单独对每个读取操作进行错误检查。
返回数据流的状态。
另请参阅
- version()¶
- Return type:
整数
返回数据序列化格式的版本号。
另请参阅
- writeBool(arg__1)¶
- Parameters:
arg__1 – 布尔值
- writeBytes(s)¶
- Parameters:
s – 字符串
- Return type:
将长度指示符
len
和缓冲区s
写入流并返回流的引用。len
被序列化为一个 quint32 和一个可选的 quint64,后面跟着来自s
的len
字节。请注意,数据没有被编码。- writeDouble(arg__1)¶
- Parameters:
arg__1 – 浮点数
- writeFloat(arg__1)¶
- Parameters:
arg__1 – 浮点数
- writeInt16(arg__1)¶
- Parameters:
arg__1 – 整数
- writeInt32(arg__1)¶
- Parameters:
arg__1 – 整数
- writeInt64(arg__1)¶
- Parameters:
arg__1 – 整数
- writeInt8(arg__1)¶
- Parameters:
arg__1 – 整数
- writeQChar(arg__1)¶
- Parameters:
arg__1 –
QChar
- writeQString(arg__1)¶
- Parameters:
arg__1 – str
- writeQStringList(arg__1)¶
- Parameters:
arg__1 – 字符串列表
- writeQVariant(arg__1)¶
- Parameters:
arg__1 – 对象
- writeRawData(arg__1)¶
- Parameters:
arg__1 –
PyBuffer
- writeRawData(s)
- Parameters:
s – 字符串
- Return type:
整数
从
s
写入len
字节到流中。返回实际写入的字节数,或在错误时返回 -1。数据不进行编码。- writeString(arg__1)¶
- Parameters:
arg__1 – str
- writeUInt16(arg__1)¶
- Parameters:
arg__1 – 整数
- writeUInt32(arg__1)¶
- Parameters:
arg__1 – 整数
- writeUInt64(arg__1)¶
- Parameters:
arg__1 – 整数
- writeUInt8(arg__1)¶
- Parameters:
arg__1 – 整数