QIODevice管道数据

Piping data of QIODevice

本文关键字:数据 管道 QIODevice      更新时间:2023-10-16

我有一个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