Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QBuffer Class Reference
[QtCore module]

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

继承QIODevice

Methods


Detailed Description

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

Q缓冲器允许你访问一个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缓冲区是为你,当你创建一个Q缓冲器创建。您可以直接通过调用访问该缓冲区buffer( ) 。也可以使用ΣQ缓冲与现有QByteArray通过调用setBuffer( ) ,或者通过你的数组Q缓冲器的构造函数。

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

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

     QByteArray byteArray;
     QBuffer buffer(&byteArray);
     buffer.open(QIODevice.WriteOnly);

     QDataStream out(&buffer);
     out << QApplication.palette();

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

     QPalette palette;
     QBuffer buffer(&byteArray);
     buffer.open(QIODevice.ReadOnly);

     QDataStream in(&buffer);
     in >> palette;

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

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


Method Documentation

QBuffer.__init__ (self, QObject parent = None)

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

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

See also open( ) 。

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

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

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

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

例如:

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

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

bool QBuffer.atEnd (self)

从重新实现QIODevice.atEnd( ) 。

QByteArray QBuffer.buffer (self)

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

See also setBuffer()和data( ) 。

bool QBuffer.canReadLine (self)

从重新实现QIODevice.canReadLine( ) 。

QBuffer.close (self)

从重新实现QIODevice.close( ) 。

QBuffer.connectNotify (self, SIGNAL())

QByteArray QBuffer.data (self)

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

这是相同的buffer( ) 。

See also setData()和setBuffer( ) 。

QBuffer.disconnectNotify (self, SIGNAL())

bool QBuffer.open (self, QIODevice.OpenMode openMode)

从重新实现QIODevice.open( ) 。

int QBuffer.pos (self)

从重新实现QIODevice.pos( ) 。

str QBuffer.readData (self, int maxlen)

从重新实现QIODevice.readData( ) 。

bool QBuffer.seek (self, int off)

从重新实现QIODevice.seek( ) 。

QBuffer.setBuffer (self, QByteArray a)

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

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

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

例如:

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

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

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

QBuffer.setData (self, QByteArray data)

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

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

See also data()和setBuffer( ) 。

QBuffer.setData (self, str adata)

这是一个重载函数。

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

int QBuffer.size (self)

从重新实现QIODevice.size( ) 。

int QBuffer.writeData (self, str data)

从重新实现QIODevice.writeData( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5