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 –
QByteArray
parent –
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()
为真,则不执行任何操作。另请参阅