QBuffer Class Reference

该类提供一个QIODevice接口为一个QByteArray
#include
继承QIODevice
注意:该类所以的函数是可重入的
公公函数:
QBuffer  ( QObject * parent = 0 )
QBuffer  ( QByteArray * byteArray, QObject * parent = 0 )
~QBuffer  ()
QByteArray &
buffer  ()
const QByteArray &
buffer  () const
const QByteArray &
data  () const
void
setBuffer  ( QByteArray * byteArray )
void
setData  ( const QByteArray & data )
void
setData  ( const char * data, int size )
重现实现公共函数:
virtual bool
atEnd  () const
virtual bool
canReadLine  () const
virtual void
close  ()
virtual bool
open  ( OpenMode flags )
virtual qint64
pos  () const
virtual bool
seek  ( qint64 pos )
virtual qint64
size  () const
重新实现受保护的函数:
virtual qint64
readData  ( char * data, qint64 len )
virtual qint64
writeData  ( const char * data, qint64 len )
详细描述:
QBuffer允许你来存取一个QByteArray通过使用QIODevice接口。QByteArray被对待作为一个标准的随机存取文件。
QBuffer buffer;
char ch;
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'
缺省的,一个内部的QByteArray缓存被建立当你创造一个QBuffer。你能存取这个buffer通过调用buffer()。你也能使用QBuffer用一个存在的QByteArray通过调用setBuffer(),或者通过传递你的数组到QBuffer的构造函数
调用open()来打开buffer,然后调用write()或者putChar()来写bufferRead(),readLine(),readALL()或者getChar()来读。Size()返回目前buffer的大小,你能寻找任意的位置在这个buffer通过调用seek()。当你退出时,调用close()。
下面的代码片段展示怎样写数据到一个QByteArray通过使用QDataStreamQBuffer
QByteArray byteArray;
       
     QBuffer buffer(&byteArray);
       
     buffer.open(QIODevice::WriteOnly);
       

     
       
     
     QDataStream out(&buffer);
       
     out << QApplication::palette();
       
有效地,我们转换应用的QPalette到一个字节数组。下面是读数据
QPalette palette;
       
     QBuffer buffer(&byteArray);
       
     buffer.open(QIODevice::ReadOnly);
       

     
       
     
     QDataStream in(&buffer);
       
     in >> palette;
       
QTextStreamQDataStream也提供方便的构造函数来在幕后构建QByteArray来创造一个QBuffer
QBuffer发信号readRead(),当心的数据到达。通过连接这个信号,你能使用QBuffer来存储缓存数据在处理他之前。例如,你能传递bufferQFtp当下载一个文件从一个FTP服务器。当一个新的数据负荷已经被下载,readRead()被发出,你能处理数据当他到达后。QBuffer也发出bytesWritten()每当新数据已经被写入buffer时。
 
成员函数文件:

QBuffer::QBuffer ( QObject * parent = 0 )

QBuffer::QBuffer ( QByteArray * byteArray, QObject * parent = 0 )

 
例子:
QByteArray byteArray("abc");
       
     QBuffer buffer(&byteArray);
       
     buffer.open(QIODevice::WriteOnly);
       
     buffer.seek(3);
       
     buffer.write("def", 3);
       
     buffer.close();
       
     // byteArray == "abcdef"
       

QBuffer::~QBuffer ()

bool QBuffer::atEnd () const   [virtual]

QIODevice::atEnd()

QByteArray & QBuffer::buffer ()

返回一个引用到QBuffer的内部buffer。你能使用它来修改QByteArrayQBuffer的后面

const QByteArray & QBuffer::buffer () const

bool QBuffer::canReadLine () const   [virtual]

void QBuffer::close ()   [virtual]

const QByteArray & QBuffer::data () const

bool QBuffer::open ( OpenMode flags )   [virtual]

qint64 QBuffer::pos () const   [virtual]

qint64 QBuffer::readData ( char * data, qint64 len )   [virtual protected]

bool QBuffer::seek ( qint64 pos )   [virtual]

void QBuffer::setBuffer ( QByteArray * byteArray )

例子
QByteArray byteArray("abc");
       
     QBuffer buffer;
       
     buffer.setBuffer(&byteArray);
       
     buffer.open(QIODevice::WriteOnly);
       
     buffer.seek(3);
       
     buffer.write("def", 3);
       
     buffer.close();
       
     // byteArray == "abcdef"
       

void QBuffer::setData ( const QByteArray & data )

void QBuffer::setData ( const char * data, int size )

qint64 QBuffer::size () const   [virtual]

qint64 QBuffer::writeData ( const char * data, qint64 len )   [virtual protected]