Qt基础教程二进制文件操作.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进 制文件。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的 顺序写入,读出时也按照相应的顺序读出。例如地球物理中常用的 SEG-Y格式 文件,必须按照其标准格式要求写入数据才符合这种文件的格式规范,读取数 据时也需要按照格式定义来读出。Qt使用QFile和QDataStream进行二进制 数据文件的读写: ? QFile负责文件的10设备接口,即与文件的物理交互; ? QDataStream以数据流的方式读取文件内容或写入文件内容。 本节以实例中演示二进制文件的读写,图 1是程序运行的界面。 叩QD日怙阳朋写文伴 - □ X □ 表格复说tiff 乙 3 tn宏件 壬件喫存d时文件 S入行瞬万 Depth Measured Depth Direction Offset Quality Sampled 1 1 11.00 22.00 33X0 优 0 Esmpbd 2 3 n 00 22.00 妇00 不合格 0 Sampled 3 3 11.00 22.00 100 □ SEFTipled AA 11.00 22.00 33.00 0 Sampled 5 5 n.oo 54.00 33.00 优 当前自币g;牟T 5歹」坦元魂內容:Sampled 图1二进制文件读写功能 实例以表格形式编辑一个数据表,采用 Model/View 结构,编辑后的数据 保存为二进制文件,这与前面所讲的用纯文本文件存储数据不同。根据 「 QDataStream保存文件时使用的数据编码的方式不同,可以保存为两种文件: 用Qt预定义编码保存各种类型数据的文件,定义文件后缀为“ .stm ”。Qt预 定义编码是指在写入某个类型数据,如整形数、字符串等到文件流时,使用 Qt 预定义的编码。可以将这种 Qt预定义数据格式编码类比于 HTML的标记符,Qt 写入某种类型数据时用了 Qt预定义的标记符,读出数据时,根据标记符读出 数据。使用Qt预定义编码保存的流文件,某些字节是 QDataStream自己写入 的,我们并不完全知道文件内每个字节的意义,但是用 QDataStream可以读出 相应的数据。 标准编码数据文件,定义文件后缀为“ .dat ”。在将数据写到文件时,完全使 用数据的二进制原始内容,每个字节都有具体的定义,在读出数据时,只需根 据每个字节的定义读出数据即可。 实例samp7_2具有如下功能: Qt?可以在表格内编辑数据,同样的表格数据内容可以保存为两种格式的文件, 预定义编码文件(stm文件)和标准编码文件(dat文件); Qt ?界面上的表格数据可以修改,可以添加行、插入行、删除行; ?可以读取stm文件或dat文件,虽然文件格式不一样,但对相同的界面数据 表存储的文件的实质内容是一样的。 实例 中的主窗口使用了 Model/View 结构、标准项数据模型 QStandardItemModel 和选择模型 QltemSelectionModel,界面上使用了 QTableView组件,还有代理组件。 这些涉及Model/View的设计可参考前面章节,这些设计在前述章节里己经介绍 过,不是本节的重点,不再详述。 为便于理解后面的程序,这里给出主窗口 Mai nWindow类中自定义的一些 变量和函数,具体如下(忽略了自动生成的一些定义): class Mai nWin dow : public QMai nWin dow { p rivate: QLabel *LabCellPos; //当前单元格行列号 QLabel *LabCellText; //当前单元格内容 QWIn tS pin Delegate in tS pin Delegate; // 整型数,代理组件 QWFloatS pin Delegate floatS pin Delegate; // 浮点数,代理组件 QWComboBoxDelegate comboBoxDelegate; // 列表选择,代理组件 QStandardItemModel *theModel; // 数据模型 QItemSelectionModel *theSelection; // 选择模型 void resetTable (int aRowCount) ; // 表格复位,设定行数 bool saveDataAsStream (QString aFileName) ;// 保存为 stm 文件 bool openDataAsStream (QString aFileName) ;// 打开 stm 文件 bool saveBinaryFile (QString aFileName) ; // 保存为 dat 文件 boo

文档评论(0)

大宝&小宝 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档