缓冲区类QBuffer
1、QBuffer继承自QIODevice
2、是一种随机设备
3、和QFile类似,
4、有了 QBuffer,你可以把 QByteArray 当成文件一样来操作
其主要作用就是像QFile操作文件一样来操作一块QByteArray(内存区域),比如读和写
常用方法
构造函数
- 在构造函数中指定要操作的QByteArray
-
QBuffer(QByteArray *byteArray, QObject *parent = nullptr)
- 默认构造函数也可以不指定QByteArray,QBuffer自己内部会生成
-
QBuffer(QObject *parent = nullptr)
设置QByteArray
也可以通过下面2个函数来指定要操作的QByteArray
void setBuffer(QByteArray *byteArray)
void setData(const QByteArray &data)
获取关联的QByteArray
QByteArray &buffer()
const QByteArray &buffer() const
const QByteArray &data() const
举例:
像文件一样来操作QByteArray
QByteArray ba;
QBuffer buffer;buffer.setBuffer( & ba); //设置QByteArray
if (buffer.open(QIODevice::ReadWrite)) //打开QByteArray
{buffer.write("你好世界"); //往里面写数据buffer.close();
} else {qDebug() << buffer.errorString();
}qDebug() << ba.constData(); //打印下里面的数据
写入二进制数据
QByteArray byteArray;
QBuffer buffer( & byteArray);
buffer.open(QIODevice::WriteOnly);QDataStream out( & buffer);
out << QApplication::palette();//将画板信息写入到QBuffer关联的QByteArray中
读取二进制流
QPalette palette;
QBuffer buffer( & byteArray);
buffer.open(QIODevice::ReadOnly);QDataStream in ( & buffer);
in >> palette;
往指定位置写入数据
QByteArray byteArray("abc");
QBuffer buffer;
buffer.setBuffer( & byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);//光标位置往后移动3个,移到c的后面
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"
学习链接:https://github.com/0voice