- class QBuffer#
QBuffer
类为QIODevice
接口提供了一个QByteArray
. 更多信息...概述#
方法#
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
的构造函数,来使用现有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()
信号。- __init__(buf[, parent=None])#
- 参数:
buf –
QByteArray
parent –
QObject
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
基于指向
byteArray
的QByteArray
作为内部缓冲区的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])
- 参数:
parent –
QObject
使用给定的
parent
构建一个空的缓冲区。您可以通过调用setData()
来填充缓冲区中的数据,或者开启写模式并使用write()
。另请参阅
open()
- buffer()#
- 返回类型:
这是一个重载函数。
它与
data()
相同。- data()#
- 返回类型:
返回缓冲区中的数据。
它与
buffer()
相同。另请参阅
- setBuffer(a)#
- 参数:
a –
QByteArray
警告
本节包含从 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
以进行工作。此字节数组初始为空。- setData(data)#
- 参数:
data –
QByteArray
将内部缓冲区的内容设置为
data
。这与将data
分配给buffer()
相同。如果
isOpen()
为true,则不执行任何操作。另请参阅