[QtCore module]

该Q缓冲器类提供了一个QIODevice接口为一QByteArrayMore…

继承QIODevice

Methods

  • __init__ (self, QObject parent = None)
  • __init__ (self, QByteArray byteArray, QObject parent = None)
  • bool atEnd (self)
  • QByteArray buffer (self)
  • bool canReadLine (self)
  • close (self)
  • connectNotify (self, SIGNAL())
  • QByteArray data (self)
  • disconnectNotify (self, SIGNAL())
  • bool open (self, QIODevice.OpenMode openMode)
  • int pos (self)
  • str readData (self, int maxlen)
  • bool seek (self, int off)
  • setBuffer (self, QByteArray a)
  • setData (self, QByteArray data)
  • setData (self, str adata)
  • int size (self)
  • int writeData (self, str data)

Detailed Description

该Q缓冲器类提供了一个QIODevice接口为一QByteArray

Q缓冲器允许你访问一个QByteArray使用QIODevice接口。该QByteArray被视为只是作为一个标准的随机访问的文件。例如:

  1. QBuffer buffer;
  2. char ch;
  3. buffer.open(QBuffer.ReadWrite);
  4. buffer.write("Qt rocks!");
  5. buffer.seek(0);
  6. buffer.getChar(&ch); // ch == 'Q'
  7. buffer.getChar(&ch); // ch == 't'
  8. buffer.getChar(&ch); // ch == ' '
  9. buffer.getChar(&ch); // ch == 'r'

默认情况下,内部QByteArray缓冲区是为你,当你创建一个Q缓冲器创建。您可以直接通过调用访问该缓冲区buffer( ) 。也可以使用ΣQ缓冲与现有QByteArray通过调用setBuffer( ) ,或者通过你的数组Q缓冲器的构造函数。

Call open()打开缓冲区。然后调用write()或putChar( )写入到缓冲区,并read( )readLine( )readAll() ,或getChar()读取它。size()返回缓冲区的当前大小,并且可以通过调用试图在缓冲区中的任意位置seek( ) 。当你与访问缓冲完成后,调用close( ) 。

下面的代码片段显示了如何将数据写入到QByteArray using QDataStream和Q缓冲器:

  1. [QByteArray](docs_qbytearray.html) byteArray;
  2. QBuffer buffer(&byteArray);
  3. buffer.open([QIODevice](docs_qiodevice.html).WriteOnly);
  4. [QDataStream](docs_qdatastream.html) out(&buffer);
  5. out << [QApplication](docs_qapplication.html).palette();

实际上,我们把应用程序的QPalette成一个字节数组。以下是如何从读取数据QByteArray

  1. [QPalette](docs_qpalette.html) palette;
  2. QBuffer buffer(&byteArray);
  3. buffer.open([QIODevice](docs_qiodevice.html).ReadOnly);
  4. [QDataStream](docs_qdatastream.html) in(&buffer);
  5. in >> palette;

QTextStreamQDataStream还提供了方便的构造函数,它接受一个QByteArray并创建一个Q缓冲器幕后。

Q缓冲器发出readyRead( )当新的数据到达缓冲区。通过连接到这个信号,就可以使用Q缓冲器处理之前来存储临时数据。例如,您可以将缓冲区传递到QFtp从FTP服务器上下载一个文件时。每当一个新的数据有效载荷被下载,readyRead( )被发射,并且可以处理刚到的数据。 Q缓冲器还发出bytesWritten( )每次新的数据已经被写入到缓冲区。


Method Documentation

  1. QBuffer.__init__ (self, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

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

See also open( ) 。

  1. QBuffer.__init__ (self, QByteArray byteArray, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个QBuffer使用该QByteArray指向byteArray作为其内部缓冲器,并与给定的parent。来电者是负责确保byteArray保持有效,直到QBuffer被破坏,或直到setBuffer( )被调用来更改缓冲区。QBuffer不走的所有权QByteArray

如果您在只写模式打开的缓冲区或读写模式和写的东西进入QBufferbyteArray将被修改。

例如:

  1. [QByteArray](docs_qbytearray.html) byteArray("abc");
  2. [QBuffer](docs_qbuffer.html) buffer(&byteArray);
  3. buffer.open([QIODevice](docs_qiodevice.html).WriteOnly);
  4. buffer.seek(3);
  5. buffer.write("def", 3);
  6. buffer.close();
  7. // byteArray == "abcdef"

See also open( )setBuffer()和setData( ) 。

  1. bool QBuffer.atEnd (self)

从重新实现QIODevice.atEnd( ) 。

  1. QByteArray QBuffer.buffer (self)

返回一个引用QBuffer的内部缓冲区。你可以用它来修改QByteArray后面的QBuffer的背部。

See also setBuffer()和data( ) 。

  1. bool QBuffer.canReadLine (self)

从重新实现QIODevice.canReadLine( ) 。

  1. QBuffer.close (self)

从重新实现QIODevice.close( ) 。

  1. QBuffer.connectNotify (self, SIGNAL())
  1. QByteArray QBuffer.data (self)

[

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

](docs_qbytearray.html)

这是相同的buffer( ) 。

See also setData()和setBuffer( ) 。

  1. QBuffer.disconnectNotify (self, SIGNAL())
  1. bool QBuffer.open (self, QIODevice.OpenMode openMode)

从重新实现QIODevice.open( ) 。

  1. int QBuffer.pos (self)

从重新实现QIODevice.pos( ) 。

  1. str QBuffer.readData (self, int maxlen)

从重新实现QIODevice.readData( ) 。

  1. bool QBuffer.seek (self, int off)

从重新实现QIODevice.seek( ) 。

  1. QBuffer.setBuffer (self, QByteArray a)

品牌QBuffer使用QByteArray指向byteArray作为其内部缓冲器中。来电者是负责确保byteArray保持有效,直到QBuffer被破坏,或直到setBuffer ( )被调用来更改缓冲区。QBuffer不走的所有权QByteArray

什么都不做,如果isOpen()是真实的。

如果您在只写模式打开的缓冲区或读写模式和写的东西进入QBufferbyteArray将被修改。

例如:

  1. [QByteArray](docs_qbytearray.html) byteArray("abc");
  2. [QBuffer](docs_qbuffer.html) buffer;
  3. buffer.setBuffer(&byteArray);
  4. buffer.open([QIODevice](docs_qiodevice.html).WriteOnly);
  5. buffer.seek(3);
  6. buffer.write("def", 3);
  7. buffer.close();
  8. // byteArray == "abcdef"

If byteArray为0时,缓存器创建其自己的内部QByteArray去努力。这个字节数组初始为空。

See also buffer( )setData()和open( ) 。

  1. QBuffer.setData (self, QByteArray data)

设置内部缓冲区的内容被data。这是相同的分配databuffer( ) 。

什么都不做,如果isOpen()是真实的。

See also data()和setBuffer( ) 。

  1. QBuffer.setData (self, str adata)

这是一个重载函数。

设置内部缓冲区的内容是第一size字节data

  1. int QBuffer.size (self)

从重新实现QIODevice.size( ) 。

  1. int QBuffer.writeData (self, str data)

从重新实现QIODevice.writeData( ) 。