class QBuffer#

QBuffer 类为 QIODevice 接口提供了一个 QByteArray . 更多信息...

Inheritance diagram of PySide6.QtCore.QBuffer

概述#

方法#

注意

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

详细说明#

警告

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

QBuffer 允许您使用 QIODevice 接口访问 QByteArrayQByteArray 被处理得就像一个标准的随机访问文件。示例

buffer = QBuffer()
ch = char()
buffer.open(QBuffer.ReadWrite)
buffer.write("Qt rocks!")
buffer.seek(0)
buffer.getChar(ch) # ch == 'Q'
buffer.getChar(ch) # ch == 't'
buffer.getChar(ch) # ch == ' '
buffer.getChar(ch) # ch == 'r'

默认情况下,当您创建 QBuffer 时,会自动为您创建一个内部的 QByteArray 缓冲区。您可以通过调用 buffer() 来直接访问此缓冲区。您也可以通过调用 setBuffer() 或将您的数组传递给 QBuffer 的构造函数,来使用现有 QByteArray

调用 open() 打开缓冲区。然后调用 write()putChar() 将数据写入缓冲区,并通过调用 read()readLine()readAll()getChar() 从缓冲区读取数据。 size() 返回缓冲区的当前大小,您可以通过调用 seek() 在缓冲区中的任意位置进行定位。当您完成对缓冲区的访问后,请调用 close()

以下代码片段演示了如何使用QDataStreamQBuffer 将数据写入 QByteArray

byteArray = QByteArray()
buffer = QBuffer(byteArray)
buffer.open(QIODevice.WriteOnly)
out = QDataStream(buffer)
out << QApplication.palette()

实际上,我们将应用程序的 QPalette 转换为一个字节数组。下面是如何从 QByteArray 读取数据的示例。

palette = QPalette()
buffer = QBuffer(byteArray)
buffer.open(QIODevice.ReadOnly)
in = QDataStream(buffer)
in >> palette

QTextStreamQDataStream 还提供了便利的构造函数,这些构造函数接受一个 QByteArray 并在幕后创建一个 QBuffer

QBuffer 在缓冲区中到达新数据时发出 readyRead() 信号。通过连接到这个信号,您可以使用 QBuffer 来存储在处理之前临时数据。每当将新数据写入缓冲区时,QBuffer 还会发出 bytesWritten() 信号。

__init__(buf[, parent=None])#
参数:

警告

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

基于指向 byteArrayQByteArray 作为内部缓冲区的 QBuffer,并带有关给定的 parent。调用者负责确保在 QBuffer 被销毁之前,或者直到调用 setBuffer() 以更改缓冲区之前,byteArray 保持有效。《a class="xref py py-class docutils literal notranslate">QBuffer 不拥有 QByteArray

如果您以只写模式或读写模式打开缓冲区,并将内容写入到 QBuffer,则 byteArray 将被修改。

示例

byteArray = QByteArray("abc")
buffer = QBuffer(byteArray)
buffer.open(QIODevice.WriteOnly)
buffer.seek(3)
buffer.write("def", 3)
buffer.close()
# byteArray == "abcdef"

另请参阅

open() setBuffer() setData()

__init__([parent=None])
参数:

parentQObject

使用给定的 parent 构建一个空的缓冲区。您可以通过调用 setData() 来填充缓冲区中的数据,或者开启写模式并使用 write()

另请参阅

open()

buffer()#
返回类型:

QByteArray

这是一个重载函数。

它与 data() 相同。

data()#
返回类型:

QByteArray

返回缓冲区中的数据。

它与 buffer() 相同。

另请参阅

setData() setBuffer()

setBuffer(a)#
参数:

aQByteArray

警告

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

使QBuffer使用由byteArray指向的QByteArray作为其内部缓冲区。调用者负责确保在QBuffer销毁,或直到调用setBuffer()更改缓冲区之前,byteArray保持有效。QBuffer不拥有QByteArray

如果isOpen()为true,则不执行任何操作。

如果您以只写模式或读写模式打开缓冲区,并将内容写入到 QBuffer,则 byteArray 将被修改。

示例

byteArray = QByteArray("abc")
buffer = QBuffer()
buffer.setBuffer(byteArray)
buffer.open(QIODevice.WriteOnly)
buffer.seek(3)
buffer.write("def", 3)
buffer.close()
# byteArray == "abcdef"

如果byteArray是None,则缓冲区将创建自己的内部QByteArray以进行工作。此字节数组初始为空。

另请参阅

buffer() setData() open()

setData(data)#
参数:

dataQByteArray

将内部缓冲区的内容设置为data。这与将data分配给buffer()相同。

如果isOpen()为true,则不执行任何操作。

另请参阅

data() setBuffer()