PySide6.QtCore.QBuffer¶
- class QBuffer¶
QBuffer类为QByteArray提供了一个QIODevice接口。更多…概要¶
方法¶
def
__init__()def
buffer()def
data()def
setBuffer()def
setData()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QBuffer允许你使用QIODevice接口访问QByteArray。QByteArray被视为标准的随机访问文件。示例: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()。以下代码片段展示了如何使用
QDataStream和QBuffer将数据写入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
QTextStream和QDataStream还提供了方便的构造函数,这些构造函数接受一个QByteArray并在幕后创建一个QBuffer。QBuffer当新数据到达缓冲区时,会发出readyRead()信号。通过连接这个信号,您可以使用QBuffer在处理数据之前存储临时数据。QBuffer每次有新数据写入缓冲区时,也会发出bytesWritten()信号。使用给定的
parent构造一个空缓冲区。您可以调用setData()来填充数据,或者您可以以写入模式打开它并使用write()。另请参阅
open()- __init__(buf[, parent=None])
- Parameters:
buf –
QByteArrayparent –
QObject
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
构造一个
QBuffer,它使用由byteArray指向的QByteArray作为其内部缓冲区,并带有给定的parent。调用者负责确保byteArray在QBuffer被销毁之前或调用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:
这是一个重载函数。
这与
data()相同。- data()¶
- Return type:
返回缓冲区中包含的数据。
这与
buffer()相同。另请参阅
- setBuffer(a)¶
- Parameters:
a –
QByteArray
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
使
QBuffer使用由byteArray指向的QByteArray作为其内部缓冲区。调用者负责确保byteArray在QBuffer被销毁之前或调用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"
如果
byteArray是None,缓冲区会创建自己的内部QByteArray来进行操作。这个字节数组最初是空的。- setData(data)¶
- Parameters:
数据 –
QByteArray
将内部缓冲区的内容设置为
data。这与将data赋值给buffer()相同。如果
isOpen()为真,则不执行任何操作。另请参阅