技时实业百科网 生活百科 Qt读取二进制文件-天道酬勤-花开半夏

Qt读取二进制文件-天道酬勤-花开半夏

lang=”zh-CN”> Qt读取二进制文件-天道酬勤-花开半夏 花开半夏关注…

lang=”zh-CN”>

Qt读取二进制文件-天道酬勤-花开半夏

Qt读取二进制文件

admin
03-03 10:59
14次浏览

ool MainWindow::openBinaryFile(QString &aFileName)

{//打开二进制文件

    QFile aFile(aFileName);  //以文件方式读出

    if (!(aFile.open(QIODevice::ReadOnly)))

        return false;

    QDataStream aStream(&aFile); //用文本流读取文件

    aStream.setByteOrder(QDataStream::LittleEndian);

    qint16  rowCount,colCount;

    aStream.readRawData((char *)&rowCount, sizeof(qint16));

    aStream.readRawData((char *)&colCount, sizeof(qint16));

    this->resetTable(rowCount);

    //获取表头文字,但是并不利用

    char *buf;

    uint strLen;  //也就是 quint32

    for (int i=0;i<colCount;i++)

    {

        aStream.readBytes(buf,strLen);//同时读取字符串长度,和字符串内容

        QString str=QString::fromLocal8Bit(buf,strLen); //可处理汉字

    }

    //获取数据区数据

    QStandardItem   *aItem;

    qint16  ceShen;

    qreal  chuiShen;

    qreal  fangWei;

    qreal  weiYi;

    QString  zhiLiang;

    qint8   quYang; //分别代表逻辑值 true和false

    QModelIndex index;

    for (int i=0;i<rowCount;i++)

    {

        aStream.readRawData((char *)&ceShen, sizeof(qint16)); //测深

        index=theModel->index(i,0);

        aItem=theModel->itemFromIndex(index);

        aItem->setData(ceShen,Qt::DisplayRole);

        aStream.readRawData((char *)&chuiShen, sizeof(qreal)); //垂深

        index=theModel->index(i,1);

        aItem=theModel->itemFromIndex(index);

        aItem->setData(chuiShen,Qt::DisplayRole);

        aStream.readRawData((char *)&fangWei, sizeof(qreal)); //方位

        index=theModel->index(i,2);

        aItem=theModel->itemFromIndex(index);

        aItem->setData(fangWei,Qt::DisplayRole);

        aStream.readRawData((char *)&weiYi, sizeof(qreal)); //位移

        index=theModel->index(i,3);

        aItem=theModel->itemFromIndex(index);

        aItem->setData(weiYi,Qt::DisplayRole);

        aStream.readBytes(buf,strLen);//固井质量

        zhiLiang=QString::fromLocal8Bit(buf,strLen);

        index=theModel->index(i,4);

        aItem=theModel->itemFromIndex(index);

        aItem->setData(zhiLiang,Qt::DisplayRole);

        aStream.readRawData((char *)&quYang, sizeof(qint8)); //测井取样

        index=theModel->index(i,5);

        aItem=theModel->itemFromIndex(index);

        if (quYang==1)

            aItem->setCheckState(Qt::Checked);

        else

            aItem->setCheckState(Qt::Unchecked);

    }

    aFile.close();

    return true;

}

初学网络安全一脸懵逼?看懂直接跪下!
#yyds干货盘点# LeetCode面试题:下一个排列

本文来自网络,不代表技时实业百科网立场,转载请注明出处:https://www.hofv.cn/archives/1243

作者: admin

联系我们

联系我们

13760338406

在线咨询: QQ交谈

邮箱: 541594806@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部