qt5之QFile读写文件

article/2025/8/23 12:45:24

1、效果



读写文件用到的是QFile类,

这里,我显示文件内容用到的是 QTextEdit

2、创建打开和关闭按钮

// 打开文件btnOpenFile     = new QToolButton;btnOpenFile->setText(tr("open a file"));btnOpenFile->setToolTip(tr("open a file"));connect(btnOpenFile, SIGNAL(clicked(bool)), this, SLOT(btnOpenFileSlot()));btnOpenFile->setIcon(QIcon(":/res/ico/dev/open"));btnOpenFile->setFixedSize(80, 48);btnOpenFile->setIconSize(QSize(80, 48));// 关闭文件btnCloseFile    = new QToolButton;btnCloseFile->setText(tr("close file"));btnCloseFile->setToolTip(tr("close file"));connect(btnCloseFile, SIGNAL(clicked(bool)), this, SLOT(btnCloseFileSlot()));btnCloseFile->setIcon(QIcon(":/res/ico/dev/save"));btnCloseFile->setFixedSize(80, 48);btnCloseFile->setIconSize(QSize(80, 48));

3、打开文件

 /*getOpenFileName函数说明函数原形: QStringList QFileDialog::getOpenFileNames(QWidget * parent = 0,const QString & caption = QString(),    //  打开文件对话框的标题const QString & dir = QString(),            //  查找目录const QString & filter = QString(),     //  设置需要过滤的文件格式QString * selectedFilter = 0,Options options = 0) [static]*///---获取文件名;QString qexeFullPath    = QDir::currentPath();QString fileName        = QFileDialog :: getOpenFileName(this, tr("选择一个文件"), qexeFullPath, "*.txt");// 1、若没有选择文件if (true                == fileName.isEmpty()){// 什么也不做return;}// 2、选择了文件,打开新选择的文件前,检查先前的文件CheckFileClose();// 3、 打开文件,显示文件内容GetFileContext(fileName);

CheckFileClose函数:

// 1、若已经打开文件,且文件内容发生变化,此时又打开文件,则提示是否保存先前的文件bool fileIsOpen         = fileReadWrite->isOpen();// 1.1 若打开了, 没有关闭if (true                == fileIsOpen){// 1.1.1 若文件内容发生变化bool isChanged      = GetTextEditContentIsChanged();if (true            == isChanged){int  okcancel   = QMessageBox::information(this, tr("mention"), tr("dev tab, textEdit's content has changed, do U wanna save ?"), QMessageBox::Ok | QMessageBox::Cancel);// 点击了是,则需要保存文件if (QMessageBox::Ok == okcancel){SaveFile();}// 点击了否,什么也不做else{}}// 1.1.2 文件内容没有变化else{// 什么也不做}// 1.1.3 关闭文件fileReadWrite->close();// 1.1.4 清空显示内容textEditShowFile->clear();// 1.1.5 设置为只读textEditShowFile->setReadOnly(true);// 1.1.6 清空文件内容缓冲区textEditContent = QString("");// 1.1.6 清除文件名lineEditFileName->setText("");}// 1.2文件没有打开else{// 文件没有打开,什么也不做}
GetFileContext函数代码:
// 之前已经保证文件关闭了,现在重新打开文件// 2、 打开文件fileReadWrite->setFileName(openNewFileName);bool openFlag           = fileReadWrite->open(QIODevice ::ReadWrite | QIODevice ::Text);// 若打开失败if (false               == openFlag){QMessageBox::critical(this, tr("warning"),  tr("open file err"));return;}// 保存文件名openFileName            = openNewFileName;// 3.1 删除原有的内容textEditShowFile->clear();// 3.2 显示文件内容QTextStream textStream(fileReadWrite);while (!textStream.atEnd()){//---QtextEdit按行显示文件内容textEditShowFile->append(textStream.readLine());}// 5、解除只读textEditShowFile->setReadOnly(false);// 6、临时保存当前打开文件内容textEditContent = textEditShowFile->toPlainText();// 7、显示打开的文件名lineEditFileName->setText(openFileName);

4、关闭按钮

下面做了关闭文件前的一些检查

// 1、若已经打开文件,且文件内容发生变化,此时又打开文件,则提示是否保存先前的文件bool fileIsOpen         = fileReadWrite->isOpen();// 1.1 若打开了, 没有关闭if (true                == fileIsOpen){// 1.1.1 若文件内容发生变化bool isChanged      = GetTextEditContentIsChanged();if (true            == isChanged){int  okcancel   = QMessageBox::information(this, tr("mention"), tr("dev tab, textEdit's content has changed, do U wanna save ?"), QMessageBox::Ok | QMessageBox::Cancel);// 点击了是,则需要保存文件if (QMessageBox::Ok == okcancel){SaveFile();}// 点击了否,什么也不做else{}}// 1.1.2 文件内容没有变化else{// 什么也不做}// 1.1.3 关闭文件fileReadWrite->close();// 1.1.4 清空显示内容textEditShowFile->clear();// 1.1.5 设置为只读textEditShowFile->setReadOnly(true);// 1.1.6 清空文件内容缓冲区textEditContent = QString("");// 1.1.6 清除文件名lineEditFileName->setText("");}// 1.2文件没有打开else{// 文件没有打开,什么也不做}

其中,SaveFile函数代码如下:

 bool isOpen = fileReadWrite->isOpen();// 若文件没有打开if (false   == isOpen){return;}// 关闭文件fileReadWrite->close();fileReadWrite->open(QIODevice ::WriteOnly | QIODevice ::Text | QIODevice::Truncate);QString writeStr    = textEditShowFile->toPlainText();
#ifdef QT_DEBUGqDebug() << "文件内容 = " << writeStr;
#endif// 文件打开了,现在关闭QTextStream outFile(fileReadWrite);outFile << writeStr << endl;outFile.flush();



http://chatgpt.dhexx.cn/article/CnkPTHd6.shtml

相关文章

Qt 创建文件 用QFile和QDir类

项目需求是 根据日期创建多级子文件夹, 根目录保存 log.txt 控制台程序实现 如下执行结果 createFile 为程序目录 文档结构: 源码: #include <QtCore/QCoreApplication> #include <QDir> #include <QFile> #include <QDebug> #include <QDateTim…

QFile(文件)

QFile QFile提供一个用于读/写的接口&#xff0c;是一个可以用来读/写二进制文件的Qt资源的I/O设备&#xff0c;QFile可以单独使用&#xff0c;一般配合QTextStream或QDataStream 输入文件路径时最好使用"/"作为分隔符 构造函数&#xff1a; 常用的函数&#xff1a;…

QFileDialog

一、描述 QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。 创建 QFileDialog 最简单的方法是使用静态函数&#xff1a; fileName QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.p…

Qt -- QFile文件读写操作

对于文件的读写操作&#xff0c;C 和 C 都各有一套方式。而在 Qt 中也有一套&#xff0c;即使用 QFile 对文件进行读和写操作。 文件的打开方式 文件路径说明&#xff1a;&#xff08;windows-release编译&#xff09; QFile *file new QFile("EcgCap.dat");表示这…

[QT_032]Qt学习之基本文件读写QFile

本文转自&#xff1a;《Qt编程指南》 作者&#xff1a;奇先生 Qt编程指南&#xff0c;Qt新手教程&#xff0c;Qt Programming Guide 7.2 基本文件读写QFile Qt 常见的文件读写类有三个 QFile、QTextStream 和 QDataStream&#xff0c;本节先概要介绍这三个文件读写类&…

QFileInfo

一、描述 QFileInfo 提供有关文件系统中文件的名称和位置&#xff08;路径&#xff09;、访问权限、文件类型等信息。 FileInfo 还可用于获取有关 Qt 资源的信息。这个类是隐式共享的。 二、成员函数 2.1、判断函数 1、bool isAbsolute() 文件路径是否绝对路径。 注意&am…

QFile详解(文件如果不存在则创建、判断文件是否存在、获得文件的各种详细信息、读写文件)

目录 一、QFile文件如果不存在则创建的方法 二、QFile判断文件是否存在的方法 三、QFileInfo的方法获得文件的各种详细信息 四、QFile读写文件的内容 一、QFile文件如果不存在则创建的方法 QFile f("./1234.ini");if(!f.open(QIODevice::Append)){return 0;} op…

QFile文件读写

文章目录 简介常用apiQFile类读写文件QFileQTextStream读写文件 简介 QFile类提供了一个读取和写入文件的接口&#xff0c;一个读写文本、二进制文件和资源的I/O设备。 QFile读写文件的两种方式&#xff1a; 1.QFile可以单独使用。 2.QFile与QTextStream或QDataStream一起使用…

Qt之Qfile读取文件操作

文件系统&#xff1a;   文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象&#xff0c;这些设备具有读写字节块的能力。下面是 I/O 设备的类图&#xff08;Qt5&#xff09;&#x…

常用性能测试工具的比较

目录 性能测试的重要性针对接口的性能测试 性能测试基准接口性能测试的主要指标abenchjMeterKelude性能脚本各种监控工具 参考总结 性能测试的重要性 众所周知性能测试在软件测试中占有举足轻重的作用&#xff0c;尤其是对于互联网产品这种具有大用户量&#xff0c;大数据量&a…

推荐几款常用的性能测试工具

“ 对内容不感兴趣拉到最后领取今天的外卖红包。” 常用的性能测试工具 对于开发人员来说&#xff0c;首选是一些开源免费的性能&#xff08;压力&#xff09;测试软件&#xff0c;例如 ab&#xff08;ApacheBench&#xff09;、JMeter 等&#xff1b;对于专业的测试团队来说&…

10款主流的软件测试工具,你用过吗?

随着软件快速交付需求的增长&#xff0c;越来越多的企业开始通过DevOps方法加速软件开发速度但这样的话&#xff0c;有时候就无法保证质量&#xff0c;所以今天小编就来给大家介绍10款主流的软件测试工具&#xff0c;供大家参考。 1、UFT / QTP UFT&#xff0c;前身为Quick …

10款好用的自动化测试工具

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 如果你也想学习软件测试&#xff0c;文末卡片有我的交流群&#xff0c;加入我们&#xff0c;一…

常用的软件测试工具大全

开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator **[TestDirector]&…

软件测试工作中有哪些常用的工具?

软件测试工作中有哪些常用的工具&#xff1f;一般来说有开源测试管理工具、开源功能自动化测试工具、开源性能自动化测试工具、Quality Center、QuickTest Professional、LoadRunner等。 一、推荐10款常见的软件测试工具: &#xff08;1&#xff09;Bugfree BugFree是借鉴微软的…

我们常用的软件测试工具有哪些?

一名优秀的软件测试工程师&#xff0c;我觉得他一定也是一名善用工具的好手&#xff0c;他知道在软件测试领域都有哪些测试工具&#xff0c;这些工具都有什么优缺点&#xff0c;这些工具适合在什么情况下使用 &#xff0c;反馈的结果是什么&#xff0c;知道各种工具之间如何配合…

测试工具类

目录 测试接口管理工具&#xff1a; Swagger Eolink APIKit Apipost7  Apifox 自动化测试平台&#xff1a; Choerodon猪齿鱼 MeterSphere RPA 自动化测试框架 Appium Robot Framework Selenium python 自动化测试框架 1.Robot Framework 2.Pytest 3.UnitTest…

软件测试工具有哪些(软件测试常用的工具都有哪些)

一、一个从事软件测试行业十年的老司机列出以下与软件测试相关的工具&#xff1a; 1.操作系统&#xff1a; Linux&#xff1a;vmware、xshell 、xftp 、ssh2.数据库&#xff1a; 主流是以下三种数据库&#xff0c;尤其是MySQL以及oralce,在测试中必会的技能是对表的相关操作&…

软件测试工具都有哪些

小编今天把软件测试常见的工具列了一下&#xff0c;看看有没有你现在在用的&#xff1f; 开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter…

10大主流性能测试工具,总有一款适合你

市面上流行的压力/负载/性能测试工具多是来自国外&#xff0c;近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同&#xff0c;其功能也有很大差异&#xff0c;下面就为您简单介绍10款目前最常见的测试产品。 01 kylinTOP测试与监控平台&#xff08;商…