class QDataStream#

QDataStream 类提供了将二进制数据序列化到 QIODevice 的功能。更多

Inheritance diagram of PySide6.QtCore.QDataStream

摘要#

方法#

注意

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告知我们。

详细信息#

警告

本节包含自动从 C++ 转换到 Python 的代码片段,可能包含错误。

数据流是一个与宿主计算机的操作系统、CPU 或字节序完全独立的编码信息二进制流。例如,在 Windows 下由 PC 编写的流可以被运行 Solaris 的 Sun SPARC 读取。

您还可以使用数据流来读写 raw unencoded binary data。如果您需要一个“解析”输入流,请参见 QTextStream

QDataStream 类实现了 C++ 基本数据类型的序列化,例如 charshortintchar * 等。更复杂数据的序列化是通过将其分解成基本单元实现的。

数据流与 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,QStringQVariant 等。有关所有支持数据流的所有 Qt 类型的完整列表,请参阅序列化 Qt 数据类型

对于整数,最好始终转换为 Qt 整数类型以写入,并且以相同的 Qt 整数类型读取。这确保您获得所需的整数大小,并使您免受编译器和平台差异的影响。

枚举可以通过 QDataStream 序列化,而无需手动定义流操作符。枚举类使用声明的尺寸进行序列化。

以一个例子来说,一个 char * 字符串被写作一个32位整数,等于字符串的长度(包括‘\0’字节),然后是字符串中所有的字符(包括‘\0’字节)。当读取一个 char * 字符串时,读取4个字节来创建32位的长度值,然后读取相应数量的字符,包括以‘\0’结尾的 char * 字符串。

最初的I/O设备通常在构造函数中设置,但可以用 setDevice() 来更改。如果你已经到达数据的末尾(或者没有设置I/O设备),atEnd() 将返回true。

版本控制#

从Qt 1.0开始,QDataStream 的二进制格式已经发展,并有可能继续发展以反映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

您可以选择在序列化数据时使用哪种字节顺序。默认设置是大端(MSB优先)。将其更改为小端会破坏可移植性(除非读取器也改为小端)。我们建议除非有特殊要求,否则保持此设置。

读取和写入原始二进制数据#

您可能希望将您自己的原始二进制数据直接从数据流中读取/写入。可以使用 readRawData() 将数据从流中读取到一个预分配的 char * 中。类似地,可以使用 writeRawData() 将数据写入到流中。请注意,数据的任何编码/解码都必须由您完成。

有一对类似的函数是 readBytes()writeBytes() 。它们与它们的 原始 对应物有以下区别: readBytes() 读取一个 quint32,表示要读取的数据长度,然后读入预先分配的 char * 中; writeBytes() 写入包含数据长度的 quint32,然后是数据。请注意,除 quint32 长度以外的任何编码/解码(数据)都必须由你完成。

读取和写入 Qt 集合类#

Qt 容器类也可以序列化到 QDataStream 。这些包括 QListQSetQHash,和 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反序列化操作符将根据流中找到的信息分配内存。这些操作符不会验证请求的内存量是否合理,也不会验证其是否与流中可用的数据量兼容(例如:反序列化QByteArrayQString可能会看到为分配几个吉字节数据的要求)。

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相同。

与Qt_4_7相同。

与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)

与Qt_5_2相同

QDataStream.Qt_5_3

与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相同

与Qt_5_9相同

与Qt_5_6相同

与Qt_5_10相同

与Qt_5_6相同

与Qt_5_11相同

与Qt_5_6相同

与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)

另请参阅

setVersion() version()

class ByteOrder#

读取/写入数据的字节序。

常量

描述

QDataStream.BigEndian

最高有效字节优先(默认)

QDataStream.LittleEndian

最低有效字节优先

Status#

此枚举描述数据流的当前状态。

常量

描述

QDataStream.Ok

数据流正常运作。

QDataStream.ReadPastEnd

数据流已经读取到底层设备数据的末尾。

QDataStream.ReadCorruptData

数据流读取到损坏的数据。

QDataStream.WriteFailed

数据流无法写入底层设备。

QDataStream.SizeLimitExceeded

数据流无法读取或写入数据,因为其大小超过了当前平台的支持范围。例如,在32位平台上尝试读取超过2 GiB的数据时可能会发生这种情况。

FloatingPointPrecision#

用于读取/写入数据的浮点数的精度。这只有在数据流的版本为Qt_4_6或更高时才会产生作用。

警告

浮点数的精度必须在写入数据流的对象和读取数据流的对象上设置成相同的值。

常量

描述

QDataStream.SinglePrecision

数据流中的所有浮点数都具有32位精度。

QDataStream.DoublePrecision

数据流中的所有浮点数都具有64位精度。

自版本4.6起引入。

__init__(arg__1, flags)#
参数:

构造了一个在字节数组上运行的数据流,amode描述了如何使用设备。

或者,如果您只想从字节数组中读取,可以使用QDataStream (const QByteArray & ;)。

由于QByteArray不是QIODevice的子类,在内部会创建一个QBuffer来包装字节数组。

__init__()

构建一个没有I/O设备的字节流。

另请参阅

setDevice()

__init__(arg__1)
参数:

arg__1QByteArray

构建一个在字节数组 a 上操作的只读数据流。如果想要向字节数组写入,可以使用 QDataStream ( QByteArray *, int)

由于QByteArray不是QIODevice的子类,在内部会创建一个QBuffer来包装字节数组。

__init__(arg__1)
参数:

arg__1QIODevice

构建一个使用I/O设备 d 的数据流。

另请参阅

setDevice() device()

abortTransaction()#

中止读取事务。

这个函数通常用于在更高层协议错误或流同步丢失后丢弃事务。

如果在内部事务上调用,中止将委托给最外层事务,并且随后启动的内部事务将强制失败。

对于最外层事务,将丢弃恢复点以及流内部的任何重复数据。不会影响流当前的读取位置。

设置数据流的状

atEnd()#
返回类型:

bool

如果I/O设备达到末尾位置(流的末尾或文件末尾)或未设置I/O设备,则返回 true;否则返回 false

另请参阅

atEnd()

byteOrder()#
返回类型:

字节序

返回当前的字节序设置——要么是 BigEndian 要么是 LittleEndian

另请参阅

setByteOrder()

commitTransaction()#
返回类型:

bool

完成读取事务。如果没有在事务中发生读取错误,则返回 true,否则返回 false

如果在内部事务上调用,则提交将推迟到最外层的 commitTransaction(),rollbackTransaction()abortTransaction() 调用时发生。

否则,如果流状态指示读取到数据末尾之后,此函数会恢复流数据到 startTransaction() 调用的位置。当这种情况发生时,您需要等待更多数据到来,然后重新开始事务。如果数据流读取到损坏的数据或任何内部事务被中止,此函数将中止事务。

device()#
返回类型:

QIODevice

返回当前设置的 I/O 设备,或若当前没有设置设备则返回 None

另请参阅

setDevice()

floatingPointPrecision()#
返回类型:

浮点精度

返回数据流的浮点精度。

isDeviceTransactionStarted()#
返回类型:

bool

__lshift__(arg__2)#
参数:

arg__2QPageRanges

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPainterPath

返回类型:

QDataStream

__lshift__(p)
参数:

pQPalette

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPen

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPicture

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPoint

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPointF

返回类型:

QDataStream

__lshift__(polygon)
参数:

polygonQPolygon

返回类型:

QDataStream

__lshift__(array)
参数:

arrayQPolygonF

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QLineF

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QQuaternion

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QNetworkCacheMetaData

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QMqttTopicName

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QMqttTopicFilter

返回类型:

QDataStream

__lshift__(pdu)
参数:

pduQModbusRequest

返回类型:

QDataStream

__lshift__(pdu)
参数:

pduQModbusPdu

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QMatrix4x4

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QMarginsF

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QMargins

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QLocale

返回类型:

QDataStream

__lshift__(item)
参数:

itemQListWidgetItem

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QPixmap

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2 – str

返回类型:

QDataStream

__lshift__(history)
参数:

历史QWebEngineHistory

返回类型:

QDataStream

__lshift__(voice)
参数:

voiceQVoice

返回类型:

QDataStream

__lshift__(version)
参数:

versionQVersionNumber

返回类型:

QDataStream

__lshift__(p)
参数:

p – 对象

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QUuid

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QUrl

返回类型:

QDataStream

__lshift__(item)
参数:

itemQTreeWidgetItem

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QTransform

返回类型:

QDataStream

__lshift__(tz)
参数:

tzQTimeZone

返回类型:

QDataStream

__lshift__(item)
参数:

itemQTableWidgetItem

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QRect

返回类型:

QDataStream

__lshift__(arg__1)
参数:

arg__1 – 字符串

__lshift__(item)
参数:

itemQStandardItem

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QSizePolicy

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QSizeF

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QSize

返回类型:

QDataStream

__lshift__(info)
参数:

infoQRemoteObjectSourceLocationInfo

返回类型:

QDataStream

__lshift__(re)
参数:

reQRegularExpression

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QRegion

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QRectF

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QBitArray

返回类型:

QDataStream

__lshift__(光标)
参数:

光标QCursor

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QColorSpace

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QColor

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QCborValue

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QCborMap

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QCborArray

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QCanBusFrame

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QByteArray

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QBrush

返回类型:

QDataStream

__lshift__(uuid)
参数:

uuidQBluetoothUuid

返回类型:

QDataStream

__lshift__(ks)
参数:

ksQKeySequence

返回类型:

QDataStream

__lshift__(i)
参数:

i – int

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QVector4D

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QVector3D

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QVector2D

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QTime

返回类型:

QDataStream

__lshift__(combination)
参数:

combinationQKeyCombination

返回类型:

QDataStream

__lshift__(attr)
参数:

attrAttribute

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QDate

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QChar

返回类型:

QDataStream

__lshift__(st)
参数:

stQCborSimpleType

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QEasingCurve

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QDateTime

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QJsonValue

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QJsonObject

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QJsonDocument

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QJsonArray

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QJSValue

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QImage

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QIcon

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QHostAddress

返回类型:

QDataStream

__lshift__(shape)
参数:

shapeQGeoShape

返回类型:

QDataStream

__lshift__(rectangle)
参数:

rectangleQGeoRectangle

返回类型:

QDataStream

__lshift__(info)
参数:

infoQGeoPositionInfo

返回类型:

QDataStream

__lshift__(polygon)
参数:

多边形QGeoPolygon

返回类型:

QDataStream

__lshift__(path)
参数:

pathQGeoPath

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QLine

返回类型:

QDataStream

__lshift__(coordinate)
参数:

coordinateQGeoCoordinate

返回类型:

QDataStream

__lshift__(circle)
参数:

circleQGeoCircle

返回类型:

QDataStream

__lshift__(monitor)
参数:

monitorQGeoAreaMonitorInfo

返回类型:

QDataStream

__lshift__(arg__2)
参数:

arg__2QFont

返回类型:

QDataStream

__lshift__(info)
参数:

infoQGeoSatelliteInfo

返回类型:

QDataStream

__rshift__(arg__2)#
参数:

arg__2QPoint

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPointF

返回类型:

QDataStream

__rshift__(polygon)
参数:

polygonQPolygon

返回类型:

QDataStream

__rshift__(array)
参数:

arrayQPolygonF

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QQuaternion

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QRect

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QRectF

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QMatrix4x4

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QRegion

返回类型:

QDataStream

__rshift__(re)
参数:

reQRegularExpression

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPixmap

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPicture

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPen

返回类型:

QDataStream

__rshift__(p)
参数:

pQPalette

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPainterPath

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QPageRanges

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QNetworkCacheMetaData

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QMqttTopicName

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QMqttTopicFilter

返回类型:

QDataStream

__rshift__(pdu)
参数:

pduQModbusRequest

返回类型:

QDataStream

__rshift__(code)
参数:

codeFunctionCode

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QUrl

返回类型:

QDataStream

__rshift__(circle)
参数:

circleQGeoCircle

返回类型:

QDataStream

__rshift__(i)
参数:

ichar

返回类型:

QDataStream

__rshift__(历史记录)
参数:

历史QWebEngineHistory

返回类型:

QDataStream

__rshift__(语音)
参数:

voiceQVoice

返回类型:

QDataStream

__rshift__(版本)
参数:

versionQVersionNumber

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QVector4D

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QVector3D

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QVector2D

返回类型:

QDataStream

__rshift__(p)
参数:

p – 对象

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QUuid

返回类型:

QDataStream

__rshift__(信息)
参数:

infoQRemoteObjectSourceLocationInfo

返回类型:

QDataStream

__rshift__(项目)
参数:

itemQTreeWidgetItem

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QTransform

返回类型:

QDataStream

__rshift__(时区)
参数:

tzQTimeZone

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QTime

返回类型:

QDataStream

__rshift__(项目)
参数:

itemQTableWidgetItem

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2 – str

返回类型:

QDataStream

__rshift__(项目)
参数:

itemQStandardItem

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QSizePolicy

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QSizeF

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QSize

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QCborValue

返回类型:

QDataStream

__rshift__(路径)
参数:

pathQGeoPath

返回类型:

QDataStream

__rshift__(监控器)
参数:

monitorQGeoAreaMonitorInfo

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QFont

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QEasingCurve

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QDateTime

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QDate

返回类型:

QDataStream

__rshift__(光标)
参数:

光标QCursor

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QColorSpace

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QColor

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QChar

返回类型:

QDataStream

__rshift__(坐标)
参数:

coordinateQGeoCoordinate

返回类型:

QDataStream

__rshift__(st)
参数:

stQCborSimpleType

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QCborMap

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QCborArray

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QCanBusFrame

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QByteArray

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QBrush

返回类型:

QDataStream

__rshift__(uuid)
参数:

uuidQBluetoothUuid

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QBitArray

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QMarginsF

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QJsonDocument

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QMargins

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QLocale

返回类型:

QDataStream

__rshift__(项目)
参数:

itemQListWidgetItem

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QLineF

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QLine

返回类型:

QDataStream

__rshift__(ks)
参数:

ksQKeySequence

返回类型:

QDataStream

__rshift__(组合)
参数:

combinationQKeyCombination

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QJsonValue

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QJsonObject

返回类型:

QDataStream

__rshift__(polygon)
参数:

多边形QGeoPolygon

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QJsonArray

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QJSValue

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QImage

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QIcon

返回类型:

QDataStream

__rshift__(arg__2)
参数:

arg__2QHostAddress

返回类型:

QDataStream

__rshift__(形状)
参数:

shapeQGeoShape

返回类型:

QDataStream

__rshift__(信息)
参数:

infoQGeoSatelliteInfo

返回类型:

QDataStream

__rshift__(矩形)
参数:

rectangleQGeoRectangle

返回类型:

QDataStream

__rshift__(属性)
参数:

属性属性

返回类型:

QDataStream

__rshift__(信息)
参数:

infoQGeoPositionInfo

返回类型:

QDataStream

readBool()#
返回类型:

bool

readBytes(len)#
参数:

lenqint64

返回类型:

PyTuple

从流中读取缓冲区 s 并返回流的引用。

缓冲区 s 使用 new [] 分配。用 delete [] 操作符销毁它。

参数 l 被设置为缓冲区的长度。如果读取的字符串为空,则将 l 设置为 0,并将 s 设置为 None

序列化格式首先是一个长度指示符,然后是l字节的数据。如果版本小于6.7或者元素数量小于0xfffffffe(2^32 - 2),长度指示符是1 quint32;否则,后面跟有一个extend值0xfffffffe和一个实际的quint64值。对于支持isNull()的容器,它编码为一个所有位都设置为1的单个quint32,没有数据。

readDouble()#
返回类型:

浮点数

readFloat()#
返回类型:

浮点数

readInt16()#
返回类型:

整型

readInt32()#
返回类型:

整型

readInt64()#
返回类型:

整型

readInt8()#
返回类型:

整型

readQChar()#
返回类型:

QChar

readQString()#
返回类型:

字符串

readQStringList()#
返回类型:

字符串列表

readQVariant()#
返回类型:

对象

readRawData(len)#
参数:

len – int

返回类型:

整型

从流中读取最多len字节到s中,并返回读取的字节数。如果发生错误,此函数返回-1。

缓冲区s必须预先分配。数据不会被解码。

readString()#
返回类型:

字符串

readUInt16()#
返回类型:

整型

readUInt32()#
返回类型:

整型

readUInt64()#
返回类型:

整型

readUInt8()#
返回类型:

整型

resetStatus()#

重置数据流的状��

另请参阅

Status status() setStatus()

rollbackTransaction()#

回滚读取事务

此函数通常在提交事务前检测到不完整读取时回滚事务。

在内部事务上调用时,回滚委托给最外层事务,并且随后的启动内部事务将被迫失败。

对于最外层事务,将流数据恢复到 startTransaction() 调用点。如果数据流读取了损坏的数据或任何内部事务被终止,此函数将终止事务。

如果前面的流操作成功,将数据流的状态设置为

setByteOrder(arg__1)#
参数:

arg__1ByteOrder

将序列化字节顺序设置为 bo

bo 参数可以是 BigEndianLittleEndian

默认设置是大端。除非您有特殊要求,否则我们建议保留此设置。

另请参阅

byteOrder()

setDevice(arg__1)#
参数:

arg__1QIODevice

void QDataStream::setDevice( QIODevice *d)

将I/O设备设置为d,其中可以设置为None取消当前I/O设备。

另请参阅

device()

setFloatingPointPrecision(precision)#
参数:

precisionFloatingPointPrecision

将数据流的浮点精度设置为precision。如果浮点精度为DoublePrecision并且数据流的版本为Qt_4_6或更高,则所有浮点数将以64位精度写入和读取。如果浮点精度为SinglePrecision并且版本为Qt_4_6或更高,则所有浮点数将以32位精度写入和读取。

对于版本低于Qt_4_6 的数据流,数据流中浮点数的精度取决于调用的流运算符。

默认值为DoublePrecision

注意,此属性不影响qfloat16实例的序列化或反序列化。

警告

必须将此属性设置于写入和数据流读取的对象上相同的值。

setStatus(status)#
参数:

statusStatus

将数据流的状态设置为所提供的status

在调用resetStatus()之前,后续对setStatus()的调用将被忽略。

另请参阅

Status status() resetStatus()

setVersion(arg__1)#
参数:

arg__1 – int

警告

本节包含自动从 C++ 转换到 Python 的代码片段,可能包含错误。

将数据序列化格式的版本号设置为值v,该值来自枚举Version

如果您正在使用当前版本的 Qt,您无需设置版本,但为了您自定义的二进制格式,我们建议您这样做;请参考详细描述中的版本控制

为了适应新功能,Qt 的一些类在 Qt 的某些版本中的数据流序列化格式已更改。如果您想读取由先前版本的 Qt 创建的数据,或者写入可以由使用先前版本 Qt 编译的程序读取的数据,请使用此函数修改由 QDataStream 使用的序列化格式。

Version 枚举提供了 Qt 不同版本的符号常量。例如

out = QDataStream(file)
out.setVersion(QDataStream.Qt_4_0)

另请参阅

version() Version

skipRawData(len)#
参数:

len – int

返回类型:

整型

跳过设备中的 len 字节。返回实际跳过的字节数,或者在出错时返回 -1。

这与在对长度为 len 的缓冲区上调用 readRawData() 并忽略该缓冲区等效。

另请参阅

seek()

startTransaction()#

开始在流上执行新的读取事务。

在读取操作序列中的某个位置定义了一个可恢复点。对于顺序设备,内部会复制读取数据以允许在读取不完整时恢复。对于随机访问设备,此函数保存流的当前位置。调用 commitTransaction()rollbackTransaction()abortTransaction() 以完成当前事务。

一旦开始了一个事务,后续对该函数的调用将使事务递归。内部事务充当最外层事务的代理(即,将读取操作的状态报告给最外层事务,该事务可以恢复流的当前位置)。

注意

不支持恢复到嵌套 startTransaction() 调用的点。

当事务(包括内部事务失败)期间发生错误时,将从数据流中读取终止(所有后续的读取操作返回空/零值)并且强制后续内部事务失败。开始一个新的最外层事务可以从中恢复。这种行为使得无需单独为每个读取操作进行检查。

status()#
返回类型:

状态

返回数据流的状态。

version()#
返回类型:

整型

返回数据序列化格式的版本号。

另请参阅

setVersion() Version

writeBool(arg__1)#
参数:

arg__1 - bool

writeBytes(arg__1)#
参数:

arg__1 – 字符串

返回类型:

QDataStream

将长度指定符 len 和缓冲区 s 写入流并返回对流的引用。

len 序列化为 quint32 和可选的 quint64,然后是来自 slen 字节。请注意,数据没有进行编码。

writeDouble(arg__1)#
参数:

arg__1 - float

writeFloat(arg__1)#
参数:

arg__1 - float

writeInt16(arg__1)#
参数:

arg__1 – int

writeInt32(arg__1)#
参数:

arg__1 – int

writeInt64(arg__1)#
参数:

arg__1 – int

writeInt8(arg__1)#
参数:

arg__1 – int

writeQChar(arg__1)#
参数:

arg__1QChar

writeQString(arg__1)#
参数:

arg__1 – 字符串

writeQStringList(arg__1)#
参数:

arg__1 – 字符串列表

writeQVariant(arg__1)#
参数:

arg__1 – 对象

writeRawData(arg__1)#
参数:

arg__1PyBuffer

writeRawData(arg__1)
参数:

arg__1 – 字符串

返回类型:

整型

len 个字节数据从 s 写入流。返回实际写入的字节数,或出现错误时返回 -1。数据未进行编码。

writeString(arg__1)#
参数:

arg__1 – 字符串

writeUInt16(arg__1)#
参数:

arg__1 – int

writeUInt32(arg__1)#
参数:

arg__1 – int

writeUInt64(arg__1)#
参数:

arg__1 – int

writeUInt8(arg__1)#
参数:

arg__1 – int