PySide6.QtCore.QBuffer

class QBuffer

QBuffer 类为 QByteArray 提供了一个 QIODevice 接口。更多

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的构造函数,将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__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造一个空缓冲区。您可以调用setData()来填充数据,或者您可以以写入模式打开它并使用write()

另请参阅

open()

__init__(buf[, parent=None])
Parameters:

警告

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

构造一个QBuffer,它使用由byteArray指向的QByteArray作为其内部缓冲区,并带有给定的parent。调用者负责确保byteArrayQBuffer被销毁之前或调用setBuffer()更改缓冲区之前保持有效。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()

buffer()
Return type:

QByteArray

这是一个重载函数。

这与 data() 相同。

data()
Return type:

QByteArray

返回缓冲区中包含的数据。

这与 buffer() 相同。

另请参阅

setData() setBuffer()

setBuffer(a)
Parameters:

aQByteArray

警告

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

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

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

如果您以只写模式或读写模式打开缓冲区并向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"

如果 byteArrayNone,缓冲区会创建自己的内部 QByteArray 来进行操作。这个字节数组最初是空的。

另请参阅

buffer() setData() open()

setData(data)
Parameters:

数据QByteArray

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

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

另请参阅

data() setBuffer()