Qt-5开发及实例-第9章--Qt-5文件及磁盘处理课件

上传人:无*** 文档编号:248159080 上传时间:2024-10-22 格式:PPTX 页数:36 大小:1.48MB
返回 下载 相关 举报
Qt-5开发及实例-第9章--Qt-5文件及磁盘处理课件_第1页
第1页 / 共36页
Qt-5开发及实例-第9章--Qt-5文件及磁盘处理课件_第2页
第2页 / 共36页
Qt-5开发及实例-第9章--Qt-5文件及磁盘处理课件_第3页
第3页 / 共36页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2019/3/11 Monday,#,第,9,章,Qt,5,文件及磁盘处理,读写文本文件,01,使用,QFile,类读写文本,使用,QFile,类读写文本,【例】,(简单),(,CH901,)建立基于控制台工程,使用,QFile,类读写文本文件。,实现步骤如下。,(,1,)建立一个工程。选择“文件”“新建文件或项目,.,”菜单项,在弹出的对话框中选择“项目”组下的“,Application,”“,Qt Console Application,”选项,单击“,Choose.,”按钮。,(,2,)在弹出的对话框中对该工程进行命名并选择保存工程的路径,这里将工程命名为“,TextFile,”,单击“下一步”按钮,再次单击“下一步”按钮,最后单击“完成”按钮,完成该文件工程的建立,。,使用,QFile,类读写文本,(,3,)源文件“,main.cpp,”的具体实现代码如下:,#include,#include,#include,int main(int argc,char*argv),QCoreApplication a(argc,argv);,QFile file(textFile1.txt);/(a),if(file.open(QIODevice:ReadOnly)/(b),char buffer2048;,qint64 lineLen=file.readLine(buffer,sizeof(buffer);,/(,c),if(lineLen!=-1),/(,d),qDebug()buffer;,return a.exec();,使用,QFile,类读写文本,其中,,(a)QFile file(textFile1.txt),:,打开一个文件有两种方式。一种方式是在构造函数中指定文件名;另一种方式是使用,setFileName(),函数设置文件名。,(b)if(file.open(QIODevice:ReadOnly),:,打开文件使用,open(),函数,关闭文件使用,close(),函数。此处的,open(),函数以只读方式打开文件,只读方式参数为,QIODevice:ReadOnly,,只写方式参数为,QIODevice:WriteOnly,,读写参数为,QIODevice:ReadWrite,。,(c)qint64 lineLen=file.readLine(buffer,sizeof(buffer),:,在,QFile,中可以使用从,QIODevice,中继承的,readLine(),函数读取文本文件的一行。,(d)if(lineLen!=-1)qDebug()buffer;,:,如果读取成功,则,readLine(),函数返回实际读取的字节数;如果读取失败,则返回“,-1,”,。,使用,QFile,类读写文本,(,4,)选择“构建”“构建项目,TextFile,”菜单项,首先编辑本例所用的文本文件“,textFile1.txt,”,保存在项目,D:QtCH9CH901build-TextFile-Desktop_Qt_5_11_1_MinGW_32bit-Debug,目录下,然后运行程序,运行结果如图,9.1,所示,。,02,使用,QTextStream,类读写文本,使用,QTextStream,类读写文本,【例】,(简单),(,CH902,)建立基于控制台的工程,使用,QTextStream,类读写文本文件。,操作步骤与上节的实例类似,不再重复介绍。,(,1,)源文件“,main.cpp,”的具体实现代码如下,:,#include,#include,#include,int main(int argc,char*argv),QCoreApplication a(argc,argv);,QFile data(data.txt);,if(data.open(QFile:WriteOnly|QFile:Truncate)/(a),QTextStream out(,outQObject:tr(score:)qSetFieldWidth(10)left90 endl;,/(,b),return a.exec();,使用,QTextStream,类读写文本,其中,,(a)if(data.open(QFile:WriteOnly|QFile:Truncate),:,参数,QFile:Truncate,表示将原来文件中的内容清空。输出时将格式设为左对齐,占,10,个字符位置。,(b)outQObject:tr(score:)qSetFieldWidth(10)left90endl,:,用户使用格式化函数和流操作符设置需要的输出格式。其中,,qSetFieldWidth(),函数是设置字段宽度的格式化函数。除此之外,,QTextStream,还提供了其他一些格式化函数,见表,9.1,。,函,数,功 能 描 述,qSetFieldWidth(int width),设置字段宽度,qSetPadChar(QChar ch),设置填充字符,qSetRealNumberPercision(int precision),设置实数精度,使用,QTextStream,类读写文本,其中,,left,操作符是,QTextStream,定义的类似于,中的流操作符。,QTextStream,还提供了其他一些流操作符,见表,9.2,。,操,作,符,作 用 描 述,bin,设置读写的整数为二进制数,oct,设置读写的整数为八进制数,dec,设置读写的整数为十进制数,hex,设置读写的整数为十六进制数,showbase,强制显示进制前缀,如十六进制(,0 x,)、八进制(,0,)、二进制(,0b,),forcesign,强制显示符号(,+,,,-,),forcepoint,强制显示小数点,noshowbase,不显示进制前缀,noforcesign,不显示符号,uppercasebase,显示大写的进制前缀,lowercasebase,显示小写的进制前缀,uppercasedigits,用大写字母表示,lowercasedigits,用小写字母表示,fixed,用固定小数点表示,scientific,用科学计数法表示,left,左对齐,right,右对齐,center,居中,endl,换行,flush,清除缓冲,使用,QTextStream,类读写文本,(,2,)运行此程序后,可以看到在项目的,D:QtCH9CH902build-TextFile2-Desktop_Qt_5_11_1_MinGW_32bit-Debug,文件夹下自动建立了一个文本文件“,data.txt,”,打开后看到的内容如图,9.2,所示,。,第,9,章,Qt,5,文件及磁盘处理,读写二进制文件,读写二进制文件,【例】,(简单),(,CH903,)使用,QDataStream,读写二进制文件。,(,1,)头文件“,mainwindow.h,”的具体代码如下:,#include,class MainWindow:public QMainWindow,Q_OBJECT,public:,MainWindow(QWidget*parent=0);,MainWindow();,void fileFun();,;,读写二进制文件,(,2,)源文件“,mainwindow.cpp,”的具体代码如下:,#include mainwindow.h,#include,#include,#include,#include,MainWindow:MainWindow(QWidget*parent),:QMainWindow(parent),fileFun();,读写二进制文件,函数,fileFun(),完成主要功能,其具体代码如下,:,void MainWindow:fileFun(),/*,将二进制数据写到数据流,*/,/(,a),QFile file(binary.dat);,file.open(QIODevice:WriteOnly|QIODevice:Truncate);,QDataStream out(,/,将数据序列化,out QString(tr(,周何骏:,);,/,字符串序列化,out QDate:fromString(1996/09/25,yyyy/MM/dd);,out (qint32)23;,/,整数序列化,file.close();,/*,从文件中读取数据,*/,/(,b),file.setFileName(binary.dat);,if(!file.open(QIODevice:ReadOnly),qDebug()name birthday age;,/,获取字符串和整数,qDebug()name birthday addWidget(fileLineEdit);,mainLayout-addWidget(fileListWidget);,connect(fileLineEdit,SIGNAL(returnPressed(),this,SLOT(slotShow(QDir,);,connect(fileListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(slotDirShow(QListWidgetItem*);,QString root=/;,QDir rootDir(root);,QStringList string;,string *;,QFileInfoList list=rootDir.entryInfoList(string);,showFileInfoList(list);,文件系统浏览,槽函数,slotShow(),实现了显示目录,dir,下的所有文件,具体内容如下:,void FileView:slotShow(QDir dir),QStringList string;,stringclear();/,首先清空列表控件,for(unsigned int i=0;iaddItem(tmp);,else if(tmpFileInfo.isFile(),QIcon icon(file.png);,QString fileName=tmpFileInfo.fileName();,QListWidgetItem*tmp=new QListWidgetItem(icon,fileName);,fileListWidget-addItem(tmp);,文件系统浏览,槽函数,slotDirShow(),根据用户的选择显示下一级目录的所有文件。其具体实现代码如下,:,void FileView:slotDirShow(QListWidgetItem*item),QString str=item-text();/,将下一级的目录名保存在,str,中,QDir dir;,/,定义一个,QDir,对象,dir.setPath(fileLineEdit-text();,/,设置,QDir,对象的路径为当前目录路径,dir.cd(str),/,根据下一级目录名重新设置,QDir,对象的路径,fileLineEdit-setText(dir.absolutePath();/(a),slotShow(dir);,/,显示当前目录下的所有文件,文件系统浏览,(,3,)运行结果如图,9.5,所示。,第,9,章,Qt,5,文件及磁盘处理,获取文件信息,获取文件信息,【例】(简单),(,CH906,)利用,QFileInfo,类获得文件信息,如图,9.6,所示。,获取文件信息,工程,FileInfo.pro,的具体内容如下。,(,1,)在头文件“,fileinfo.h,”中,类,FileInfo,继承自,QDialog,类,此类中声明了用到的各种相关控件和,函数,其具体,内容,。,(,2,)源文件“,fileinfo.cpp,”,的具体,内容,。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!