书签 分享 收藏 举报 版权申诉 / 36
上传文档赚钱

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

  • 上传人(卖家):晟晟文业
  • 文档编号:5101745
  • 上传时间:2023-02-11
  • 格式:PPTX
  • 页数:36
  • 大小:1.48MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Qt-5开发及实例-第9章-Qt-5文件及磁盘处理课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Qt 开发 实例 文件 磁盘 处理 课件
    资源描述:

    1、第第9章章 Qt 5文件及磁盘处理文件及磁盘处理读写文本文件读写文本文件0101使用使用QFile类读写文本类读写文本使用使用QFile类读写文本类读写文本【例】【例】(简单)(CH901)建立基于控制台工程,使用QFile类读写文本文件。实现步骤如下。(1)建立一个工程。选择“文件”“新建文件或项目.”菜单项,在弹出的对话框中选择“项目”组下的“Application”“Qt Console Application”选项,单击“Choose.”按钮。(2)在弹出的对话框中对该工程进行命名并选择保存工程的路径,这里将工程命名为“TextFile”,单击“下一步”按钮,再次单击“下一步”按钮,最

    2、后单击“完成”按钮,完成该文件工程的建立。使用使用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

    3、)/(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,读写参数为QIODev

    4、ice: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-TextFi

    5、le-Desktop_Qt_5_11_1_MinGW_32bit-Debug目录下,然后运行程序,运行结果如图9.1所示。0202使用使用QTextStream类读写文本类读写文本使用使用QTextStream类读写文本类读写文本【例】【例】(简单)(CH902)建立基于控制台的工程,使用QTextStream类读写文本文件。操作步骤与上节的实例类似,不再重复介绍。(1)源文件“main.cpp”的具体实现代码如下:#include#include#include int main(int argc,char*argv)QCoreApplication a(argc,argv);QFile d

    6、ata(data.txt);if(data.open(QFile:WriteOnly|QFile:Truncate)/(a)QTextStream out(&data);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:

    7、tr(score:)qSetFieldWidth(10)left90endl:用户使用格式化函数和流操作符设置需要的输出格式。其中,qSetFieldWidth()函数是设置字段宽度的格式化函数。除此之外,QTextStream还提供了其他一些格式化函数,见表9.1。函 数功 能 描 述qSetFieldWidth(int width)设置字段宽度qSetPadChar(QChar ch)设置填充字符qSetRealNumberPercision(int precision)设置实数精度使用使用QTextStream类读写文本类读写文本其中,其中,left操作符是QTextStream定义的类

    8、似于中的流操作符。QTextStream还提供了其他一些流操作符,见表9.2。操 作 符作 用 描 述bin设置读写的整数为二进制数oct设置读写的整数为八进制数dec设置读写的整数为十进制数hex设置读写的整数为十六进制数showbase强制显示进制前缀,如十六进制(0 x)、八进制(0)、二进制(0b)forcesign强制显示符号(+,-)forcepoint强制显示小数点noshowbase不显示进制前缀noforcesign不显示符号uppercasebase显示大写的进制前缀lowercasebase显示小写的进制前缀uppercasedigits用大写字母表示lowercased

    9、igits用小写字母表示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)使用

    10、QDataStream读写二进制文件。(1)头文件“mainwindow.h”的具体代码如下:#include class MainWindow:public QMainWindow Q_OBJECTpublic:MainWindow(QWidget*parent=0);MainWindow();void fileFun();读写二进制文件读写二进制文件(2)源文件“mainwindow.cpp”的具体代码如下:#include mainwindow.h#include#include#include#include MainWindow:MainWindow(QWidget*parent):

    11、QMainWindow(parent)fileFun();读写二进制文件读写二进制文件函数fileFun()完成主要功能,其具体代码如下:void MainWindow:fileFun()/*将二进制数据写到数据流*/(a)QFile file(binary.dat);file.open(QIODevice:WriteOnly|QIODevice:Truncate);QDataStream out(&file);/将数据序列化 out QString(tr(周何骏:);/字符串序列化 out QDate:fromString(1996/09/25,yyyy/MM/dd);out (qint32

    12、)23;/整数序列化 file.close();/*从文件中读取数据*/(b)file.setFileName(binary.dat);if(!file.open(QIODevice:ReadOnly)qDebug()name birthday age;/获取字符串和整数 qDebug()name birthday age;file.close();读写二进制文件读写二进制文件其中,其中,(a)从从QFile file(binary.dat)到到file.close()之间的代码段:之间的代码段:每一个条目都以定义的二进制格式写入文件。Qt中的很多类型,包括QBrush、QColor、QDat

    13、eTime、QFont、QPixmap、QString、QVariant等都可以写入数据流。QDataStream类写入了name(QString)、birthday(QDate)和age(qint32)这三个数据。注意,在读取时也要使用相同的类型读出。(b)从从file.setFileName(binary.dat)到到file.close()之间的代码段:之间的代码段:QDataStream类可以读取任意的以QIODevice为基类的类生成对象产生的数据,如QTcpSocket、QUdpSocket、QBuffer、QFile、QProcess等类的数据。可以使用QDataStream在Q

    14、AbstractSocket一端写数据,在另一端使用QDataStream读取数据,这样就免去了烦琐的高低字节转换工作。读写二进制文件读写二进制文件(3)运行结果如图9.3所示。第第9章章 Qt 5文件及磁盘处理文件及磁盘处理目录操作与文件系统目录操作与文件系统0101文件大小及路径获取实例文件大小及路径获取实例文件大小及路径获取实例文件大小及路径获取实例【例】【例】(难度一般)(CH904)得到一个文件的大小和所在的目录路径。创建基于控制台的工程dirProcess.pro,前面已介绍过其建立步骤,这里不再赘述。源文件“main.cpp”的具体代码。运行结果如图9.4所示。本例项目编译后生成

    15、的文件所在的目录是:D:/Qt/yuanshu/code/CH9/CH904/build-dirProcess-Desktop_Qt_5_11_1_MinGW_32bit-Debug该目录下debug文件夹大小为878KB,release文件夹大小为0B(空),编译生成的整个目录的总大小为952KB。0202文件系统浏览文件系统浏览文件系统浏览文件系统浏览【例】【例】(难度一般)(CH905)文件系统的浏览。创建工程FileView.pro,具体内容如下。(1)在头文件“fileview.h”中,类FileView继承自QDialog类,具体代码如下:#include#include#incl

    16、ude#include#include#include#include class FileView:public QDialog Q_OBJECTpublic:FileView(QWidget*parent=0,Qt:WindowFlags f=0);FileView();void showFileInfoList(QFileInfoList list);public slots:void slotShow(QDir dir);void slotDirShow(QListWidgetItem*item);private:QLineEdit*fileLineEdit;QListWidget*f

    17、ileListWidget;QVBoxLayout*mainLayout;文件系统浏览文件系统浏览(2)源文件“fileview.cpp”的具体代码如下:#include fileview.h#include#include FileView:FileView(QWidget*parent,Qt:WindowFlags f):QDialog(parent,f)setWindowTitle(tr(File View);fileLineEdit=new QLineEdit(tr(/);fileListWidget=new QListWidget;mainLayout=new QVBoxLayout

    18、(this);mainLayout-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

    19、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);QStr

    20、ing 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(fi

    21、leLineEdit-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)在头文件

    22、“fileinfo.h”中,类FileInfo继承自QDialog类,此类中声明了用到的各种相关控件和函数,其具体内容。(2)源文件“fileinfo.cpp”的具体内容。槽函数slotFile()完成通过标准文件对话框获得所需要文件的文件名功能,其具体内容如下:void FileInfo:slotFile()QString fileName=QFileDialog:getOpenFileName(this,打开,/,files(*);fileNameLineEdit-setText(fileName);槽函数slotGet()通过QFileInfo获得具体的文件信息,其具体内容。(3)运行结

    23、果如图9.6所示。第第9章章 Qt 5文件及磁盘处理文件及磁盘处理监视文件和目录变化监视文件和目录变化监视文件和目录变化监视文件和目录变化【例】(简单)(CH907)监视指定目录功能,介绍如何使用QFileSystemWatcher。工程fileWatcher.pro的具体内容如下。(1)在头文件“watcher.h”中,Watcher类继承自QWidget类,其具体内容如下:#include#include#include class Watcher:public QWidget Q_OBJECTpublic:Watcher(QWidget*parent=0);Watcher();publi

    24、c slots:void directoryChanged(QString path);private:QLabel*pathLabel;QFileSystemWatcher fsWatcher;监视文件和目录变化监视文件和目录变化(2)源文件“watcher.cpp”的具体内容如下:#include watcher.h#include#include#include#include Watcher:Watcher(QWidget*parent):QWidget(parent)QStringList args=qApp-arguments();QString path;if(args.coun

    25、t()1)/(a)path=args1;else path=QDir:currentPath();pathLabel=new QLabel;pathLabel-setText(tr(监视的目录:)+path);QVBoxLayout*mainLayout=new QVBoxLayout(this);mainLayout-addWidget(pathLabel);fsWatcher.addPath(path);connect(&fsWatcher,SIGNAL(directoryChanged(QString),this,SLOT(directoryChanged(QString);/(b)监视文件和目录变化监视文件和目录变化响应函数directoryChanged()使用消息对话框提示用户目录发生了改变,具体实现代码如下:void Watcher:directoryChanged(QString path)QMessageBox:information(NULL,tr(目录发生变化),path);(3)运行结果如图9.7所示。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Qt-5开发及实例-第9章-Qt-5文件及磁盘处理课件.pptx
    链接地址:https://www.163wenku.com/p-5101745.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库