我有一个QIODevice
,它从未定义的来源接收数据。我想做的是将所有数据转储到从QIODevice
发送的文件,但如果我读取则依赖于原始数据更改的另一个处理程序。
基本上我想要的是
void piping( QIODevice* Data )
{
if ( outgoingData )
{
qDebug()<<Data->readAll();
}
// gets nothing as readAll has already consumed all data
dependentOn(Data);
}
函数dependentOn
不是我定义的,所以我不能更改它的定义
qint64 QIODevice::peek(char * data, qint64 maxSize)
就是你想要的。
来自文档:
qint64 QIODevice::peek(char * data, qint64 maxSize)
从设备读取最多maxSize字节为数据,不带侧效果(即,如果在peek()之后调用read(),您将获得相同的效果数据)。返回读取的字节数。如果出现错误,例如当试图窥视在WriteOnly模式下打开的设备时,这函数返回-1
参考:http://doc.qt.io/qt-5/qiodevice.html#peek