- class QDataStream#
QDataStream
类提供了将二进制数据序列化到QIODevice
的功能。更多…摘要#
方法#
def
__init__()
def
atEnd()
def
byteOrder()
def
device()
def
__lshift__()
def
__rshift__()
定义
readBool()
定义
readBytes()
定义
readDouble()
定义
readFloat()
定义
readInt16()
定义
readInt32()
定义
readInt64()
定义
readInt8()
定义
readQChar()
定义
readString()
定义
readUInt16()
定义
readUInt32()
定义
readUInt64()
定义
readUInt8()
定义
setDevice()
定义
setStatus()
定义
setVersion()
定义
status()
定义
version()
定义
writeBool()
定义
writeBytes()
定义
writeFloat()
定义
writeInt16()
定义
writeInt32()
定义
writeInt64()
定义
writeInt8()
定义
writeQChar()
定义
writeUInt8()
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告知我们。
详细信息#
警告
本节包含自动从 C++ 转换到 Python 的代码片段,可能包含错误。
数据流是一个与宿主计算机的操作系统、CPU 或字节序完全独立的编码信息二进制流。例如,在 Windows 下由 PC 编写的流可以被运行 Solaris 的 Sun SPARC 读取。
您还可以使用数据流来读写
raw unencoded binary data
。如果您需要一个“解析”输入流,请参见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
序列化,而无需手动定义流操作符。枚举类使用声明的尺寸进行序列化。以一个例子来说,一个
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
。这些包括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
可能会看到为分配几个吉字节数据的要求)。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)
另请参阅
- 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)#
- 参数:
arg__1 –
QByteArray
flags –
OpenModeFlag
的组合
构造了一个在字节数组上运行的数据流,
a
。mode
描述了如何使用设备。或者,如果您只想从字节数组中读取,可以使用
QDataStream
(constQByteArray
& ;)。由于
QByteArray
不是QIODevice
的子类,在内部会创建一个QBuffer
来包装字节数组。- __init__()
构建一个没有I/O设备的字节流。
另请参阅
- __init__(arg__1)
- 参数:
arg__1 –
QByteArray
构建一个在字节数组
a
上操作的只读数据流。如果想要向字节数组写入,可以使用QDataStream
(QByteArray
*, int)由于
QByteArray
不是QIODevice
的子类,在内部会创建一个QBuffer
来包装字节数组。- __init__(arg__1)
- 参数:
arg__1 –
QIODevice
构建一个使用I/O设备
d
的数据流。另请参阅
- abortTransaction()#
中止读取事务。
这个函数通常用于在更高层协议错误或流同步丢失后丢弃事务。
如果在内部事务上调用,中止将委托给最外层事务,并且随后启动的内部事务将强制失败。
对于最外层事务,将丢弃恢复点以及流内部的任何重复数据。不会影响流当前的读取位置。
设置数据流的状
为ReadCorruptData
.
- atEnd()#
- 返回类型:
bool
如果I/O设备达到末尾位置(流的末尾或文件末尾)或未设置I/O设备,则返回
true
;否则返回false
。另请参阅
返回当前的字节序设置——要么是
BigEndian
要么是LittleEndian
另请参阅
- commitTransaction()#
- 返回类型:
bool
完成读取事务。如果没有在事务中发生读取错误,则返回
true
,否则返回false
。如果在内部事务上调用,则提交将推迟到最外层的 commitTransaction(),
rollbackTransaction()
或abortTransaction()
调用时发生。否则,如果流状态指示读取到数据末尾之后,此函数会恢复流数据到 startTransaction() 调用的位置。当这种情况发生时,您需要等待更多数据到来,然后重新开始事务。如果数据流读取到损坏的数据或任何内部事务被中止,此函数将中止事务。
返回当前设置的 I/O 设备,或若当前没有设置设备则返回
None
。另请参阅
返回数据流的浮点精度。
- isDeviceTransactionStarted()#
- 返回类型:
bool
- __lshift__(arg__2)#
- 参数:
arg__2 –
QPageRanges
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPainterPath
- 返回类型:
- __lshift__(p)
- 参数:
p –
QPalette
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPen
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPicture
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPoint
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPointF
- 返回类型:
- __lshift__(polygon)
- 参数:
polygon –
QPolygon
- 返回类型:
- __lshift__(array)
- 参数:
array –
QPolygonF
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QLineF
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QQuaternion
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QNetworkCacheMetaData
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QMqttTopicName
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QMqttTopicFilter
- 返回类型:
- __lshift__(pdu)
- 参数:
pdu –
QModbusRequest
- 返回类型:
- __lshift__(pdu)
- 参数:
pdu –
QModbusPdu
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QMatrix4x4
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QMarginsF
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QMargins
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QLocale
- 返回类型:
- __lshift__(item)
- 参数:
item –
QListWidgetItem
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QPixmap
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 – str
- 返回类型:
- __lshift__(history)
- 参数:
历史 –
QWebEngineHistory
- 返回类型:
- __lshift__(voice)
- 参数:
voice –
QVoice
- 返回类型:
- __lshift__(version)
- 参数:
version –
QVersionNumber
- 返回类型:
- __lshift__(p)
- 参数:
p – 对象
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QUuid
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QUrl
- 返回类型:
- __lshift__(item)
- 参数:
item –
QTreeWidgetItem
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QTransform
- 返回类型:
- __lshift__(tz)
- 参数:
tz –
QTimeZone
- 返回类型:
- __lshift__(item)
- 参数:
item –
QTableWidgetItem
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QRect
- 返回类型:
- __lshift__(arg__1)
- 参数:
arg__1 – 字符串
- __lshift__(item)
- 参数:
item –
QStandardItem
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QSizePolicy
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QSizeF
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QSize
- 返回类型:
- __lshift__(info)
- 参数:
- 返回类型:
- __lshift__(re)
- 参数:
re –
QRegularExpression
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QRegion
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QRectF
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QBitArray
- 返回类型:
- __lshift__(光标)
- 参数:
光标 –
QCursor
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QColorSpace
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QColor
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QCborValue
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QCborMap
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QCborArray
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QCanBusFrame
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QByteArray
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QBrush
- 返回类型:
- __lshift__(uuid)
- 参数:
uuid –
QBluetoothUuid
- 返回类型:
- __lshift__(ks)
- 参数:
ks –
QKeySequence
- 返回类型:
- __lshift__(i)
- 参数:
i – int
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QVector4D
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QVector3D
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QVector2D
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QTime
- 返回类型:
- __lshift__(combination)
- 参数:
combination –
QKeyCombination
- 返回类型:
- __lshift__(attr)
- 参数:
attr –
Attribute
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QDate
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QChar
- 返回类型:
- __lshift__(st)
- 参数:
st –
QCborSimpleType
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QEasingCurve
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QDateTime
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QJsonValue
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QJsonObject
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QJsonDocument
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QJsonArray
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QJSValue
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QImage
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QIcon
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QHostAddress
- 返回类型:
- __lshift__(shape)
- 参数:
shape –
QGeoShape
- 返回类型:
- __lshift__(rectangle)
- 参数:
rectangle –
QGeoRectangle
- 返回类型:
- __lshift__(info)
- 参数:
info –
QGeoPositionInfo
- 返回类型:
- __lshift__(polygon)
- 参数:
多边形 –
QGeoPolygon
- 返回类型:
- __lshift__(path)
- 参数:
path –
QGeoPath
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QLine
- 返回类型:
- __lshift__(coordinate)
- 参数:
coordinate –
QGeoCoordinate
- 返回类型:
- __lshift__(circle)
- 参数:
circle –
QGeoCircle
- 返回类型:
- __lshift__(monitor)
- 参数:
monitor –
QGeoAreaMonitorInfo
- 返回类型:
- __lshift__(arg__2)
- 参数:
arg__2 –
QFont
- 返回类型:
- __lshift__(info)
- 参数:
info –
QGeoSatelliteInfo
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPointF
- 返回类型:
- __rshift__(polygon)
- 参数:
polygon –
QPolygon
- 返回类型:
- __rshift__(array)
- 参数:
array –
QPolygonF
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QQuaternion
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QRect
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QRectF
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QMatrix4x4
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QRegion
- 返回类型:
- __rshift__(re)
- 参数:
re –
QRegularExpression
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPixmap
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPicture
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPen
- 返回类型:
- __rshift__(p)
- 参数:
p –
QPalette
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPainterPath
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QPageRanges
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QNetworkCacheMetaData
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QMqttTopicName
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QMqttTopicFilter
- 返回类型:
- __rshift__(pdu)
- 参数:
pdu –
QModbusRequest
- 返回类型:
- __rshift__(code)
- 参数:
code –
FunctionCode
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QUrl
- 返回类型:
- __rshift__(circle)
- 参数:
circle –
QGeoCircle
- 返回类型:
- __rshift__(i)
- 参数:
i –
char
- 返回类型:
- __rshift__(历史记录)
- 参数:
历史 –
QWebEngineHistory
- 返回类型:
- __rshift__(语音)
- 参数:
voice –
QVoice
- 返回类型:
- __rshift__(版本)
- 参数:
version –
QVersionNumber
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QVector4D
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QVector3D
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QVector2D
- 返回类型:
- __rshift__(p)
- 参数:
p – 对象
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QUuid
- 返回类型:
- __rshift__(信息)
- 参数:
- 返回类型:
- __rshift__(项目)
- 参数:
item –
QTreeWidgetItem
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QTransform
- 返回类型:
- __rshift__(时区)
- 参数:
tz –
QTimeZone
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QTime
- 返回类型:
- __rshift__(项目)
- 参数:
item –
QTableWidgetItem
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 – str
- 返回类型:
- __rshift__(项目)
- 参数:
item –
QStandardItem
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QSizePolicy
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QSizeF
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QSize
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QCborValue
- 返回类型:
- __rshift__(路径)
- 参数:
path –
QGeoPath
- 返回类型:
- __rshift__(监控器)
- 参数:
monitor –
QGeoAreaMonitorInfo
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QFont
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QEasingCurve
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QDateTime
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QDate
- 返回类型:
- __rshift__(光标)
- 参数:
光标 –
QCursor
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QColorSpace
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QColor
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QChar
- 返回类型:
- __rshift__(坐标)
- 参数:
coordinate –
QGeoCoordinate
- 返回类型:
- __rshift__(st)
- 参数:
st –
QCborSimpleType
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QCborMap
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QCborArray
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QCanBusFrame
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QByteArray
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QBrush
- 返回类型:
- __rshift__(uuid)
- 参数:
uuid –
QBluetoothUuid
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QBitArray
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QMarginsF
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QJsonDocument
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QMargins
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QLocale
- 返回类型:
- __rshift__(项目)
- 参数:
item –
QListWidgetItem
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QLineF
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QLine
- 返回类型:
- __rshift__(ks)
- 参数:
ks –
QKeySequence
- 返回类型:
- __rshift__(组合)
- 参数:
combination –
QKeyCombination
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QJsonValue
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QJsonObject
- 返回类型:
- __rshift__(polygon)
- 参数:
多边形 –
QGeoPolygon
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QJsonArray
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QJSValue
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QImage
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QIcon
- 返回类型:
- __rshift__(arg__2)
- 参数:
arg__2 –
QHostAddress
- 返回类型:
- __rshift__(形状)
- 参数:
shape –
QGeoShape
- 返回类型:
- __rshift__(信息)
- 参数:
info –
QGeoSatelliteInfo
- 返回类型:
- __rshift__(矩形)
- 参数:
rectangle –
QGeoRectangle
- 返回类型:
- __rshift__(属性)
- 参数:
属性 –
属性
- 返回类型:
- __rshift__(信息)
- 参数:
info –
QGeoPositionInfo
- 返回类型:
- readBool()#
- 返回类型:
bool
- readBytes(len)#
- 参数:
len –
qint64
- 返回类型:
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()#
重置数据流的状��
另请参阅
- rollbackTransaction()#
回滚读取事务
此函数通常在提交事务前检测到不完整读取时回滚事务。
在内部事务上调用时,回滚委托给最外层事务,并且随后的启动内部事务将被迫失败。
对于最外层事务,将流数据恢复到
startTransaction()
调用点。如果数据流读取了损坏的数据或任何内部事务被终止,此函数将终止事务。如果前面的流操作成功,将数据流的状态设置为
ReadPastEnd
.
将序列化字节顺序设置为
bo
bo
参数可以是BigEndian
或LittleEndian
。默认设置是大端。除非您有特殊要求,否则我们建议保留此设置。
另请参阅
void QDataStream::setDevice(
QIODevice
*d)将I/O设备设置为
d
,其中可以设置为None
取消当前I/O设备。另请参阅
- setFloatingPointPrecision(precision)#
- 参数:
precision –
FloatingPointPrecision
将数据流的浮点精度设置为
precision
。如果浮点精度为DoublePrecision
并且数据流的版本为Qt_4_6
或更高,则所有浮点数将以64位精度写入和读取。如果浮点精度为SinglePrecision
并且版本为Qt_4_6
或更高,则所有浮点数将以32位精度写入和读取。对于版本低于
Qt_4_6
的数据流,数据流中浮点数的精度取决于调用的流运算符。默认值为
DoublePrecision
。注意,此属性不影响
qfloat16
实例的序列化或反序列化。将数据流的状态设置为所提供的
status
。在调用
resetStatus()
之前,后续对setStatus()的调用将被忽略。另请参阅
Status
status()
resetStatus()
- setVersion(arg__1)#
- 参数:
arg__1 – int
警告
本节包含自动从 C++ 转换到 Python 的代码片段,可能包含错误。
将数据序列化格式的版本号设置为值
v
,该值来自枚举Version
。如果您正在使用当前版本的 Qt,您无需设置版本,但为了您自定义的二进制格式,我们建议您这样做;请参考详细描述中的
版本控制
。为了适应新功能,Qt 的一些类在 Qt 的某些版本中的数据流序列化格式已更改。如果您想读取由先前版本的 Qt 创建的数据,或者写入可以由使用先前版本 Qt 编译的程序读取的数据,请使用此函数修改由
QDataStream
使用的序列化格式。Version
枚举提供了 Qt 不同版本的符号常量。例如- skipRawData(len)#
- 参数:
len – int
- 返回类型:
整型
跳过设备中的
len
字节。返回实际跳过的字节数,或者在出错时返回 -1。这与在对长度为
len
的缓冲区上调用readRawData()
并忽略该缓冲区等效。另请参阅
- startTransaction()#
开始在流上执行新的读取事务。
在读取操作序列中的某个位置定义了一个可恢复点。对于顺序设备,内部会复制读取数据以允许在读取不完整时恢复。对于随机访问设备,此函数保存流的当前位置。调用
commitTransaction()
、rollbackTransaction()
或abortTransaction()
以完成当前事务。一旦开始了一个事务,后续对该函数的调用将使事务递归。内部事务充当最外层事务的代理(即,将读取操作的状态报告给最外层事务,该事务可以恢复流的当前位置)。
注意
不支持恢复到嵌套 startTransaction() 调用的点。
当事务(包括内部事务失败)期间发生错误时,将从数据流中读取终止(所有后续的读取操作返回空/零值)并且强制后续内部事务失败。开始一个新的最外层事务可以从中恢复。这种行为使得无需单独为每个读取操作进行检查。
返回数据流的状态。
- version()#
- 返回类型:
整型
返回数据序列化格式的版本号。
另请参阅
- writeBool(arg__1)#
- 参数:
arg__1 - bool
- writeBytes(arg__1)#
- 参数:
arg__1 – 字符串
- 返回类型:
将长度指定符
len
和缓冲区s
写入流并返回对流的引用。len
序列化为 quint32 和可选的 quint64,然后是来自s
的len
字节。请注意,数据没有进行编码。- 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__1 –
QChar
- writeQString(arg__1)#
- 参数:
arg__1 – 字符串
- writeQStringList(arg__1)#
- 参数:
arg__1 – 字符串列表
- writeQVariant(arg__1)#
- 参数:
arg__1 – 对象
- writeRawData(arg__1)#
- 参数:
arg__1 –
PyBuffer
- 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