iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >qt5之QFile读写文件功能详解
  • 487
分享到

qt5之QFile读写文件功能详解

2024-04-02 19:04:59 487人浏览 安东尼
摘要

本文实例为大家分享了Qt5之QFile读写文件功能的具体代码,供大家参考,具体内容如下 1、效果 读写文件用到的是QFile类, 这里,我显示文件内容用到的是 QTextEdit

本文实例为大家分享了Qt5之QFile读写文件功能的具体代码,供大家参考,具体内容如下

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、打开文件

 
       //---获取文件名;
    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_DEBUG
    qDebug() << "文件内容 = " << writeStr;
#endif
 
    // 文件打开了,现在关闭
    QTextStream outFile(fileReadWrite);
    outFile << writeStr << endl;
    outFile.flush();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: qt5之QFile读写文件功能详解

本文链接: https://www.lsjlt.com/news/138368.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • qt5之QFile读写文件功能详解
    本文实例为大家分享了qt5之QFile读写文件功能的具体代码,供大家参考,具体内容如下 1、效果 读写文件用到的是QFile类, 这里,我显示文件内容用到的是 QTextEdit ...
    99+
    2022-11-13
  • 九、Python高级功能之文件读写
    Python高级功能之文件读写一、Python进行文件读写的函数时open或file    file('filename','mode')open('filename','mode')mode模式r    只读r+   读写w    写入,...
    99+
    2023-01-31
    高级 功能 文件
  • PHP文件函数详解:实现文件的读写和操作功能
    PHP是一种高性能的脚本语言,广泛用于Web开发。在PHP中,文件操作是一项非常常见而重要的功能。本文将详细介绍PHP中文件函数的使用,以帮助读者实现文件的读写和操作功能。一、文件的打开和关闭在PHP中,打开文件使用的是fopen函数,语法...
    99+
    2023-11-20
    PHP文件操作 文件读写 文件函数详解
  • Java文件读写详解
    目录读取文件写入文件复制文件删除文件总结读取文件 Java 中可以使用 FileInputStream 和 FileReader 两个类来读取文件: FileInputStream ...
    99+
    2023-05-20
    Java 文件读写 Java 读取文件 Java 文件的读和写
  • Android编程之文件的读写实例详解
    本文实例分析了Android编程之文件的读写方法。分享给大家供大家参考,具体如下: Android的文件读写与JavaSE的文件读写相同,都是使用IO流。而且Android使用...
    99+
    2022-06-06
    程之 Android
  • 详解python读写json文件
    python处理json文本文件主要是以下四个函数: 函数 作用 ...
    99+
    2022-11-12
  • python文件处理--文件读写详解
    目录1.读取文件2.写入文件总结1. 读取文件 文件读取很简单,就三步。 第一:在Windows的记事本中直接输入“愿你出走半生归来仍是少年!” 第二:通过代码读取文件 步骤: 使用open()函数打开文件...
    99+
    2022-06-02
    python python文件读写
  • Java中文件的读写方法之IO流详解
    目录1.File类1.1File类概述和构造方法1.2File类创建功能1.3File类判断和获取功能1.4File类删除功能2.递归2.1递归2.2递归求阶乘2.3递归遍历目录3....
    99+
    2022-11-13
  • JAVA文件读写操作详解
    目录一、读文件BufferedInputStream二、写文件BufferedOutputStream三、实际应用场景总结一、读文件BufferedInputStream Buffe...
    99+
    2022-11-13
  • C++文件读写操作详解
    目录一、读写文本文件1.1 写文件1.2读文件二、读写二进制文件2.1 写文件2.2 读文件一、读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <...
    99+
    2022-11-13
  • JavaZip文件读写操作详解
    输入流(读取): ZipInputStream是一种FileInputStream流,它可以直接读取Zip压缩包的内容: ┌───────────────────┐│   ...
    99+
    2022-11-13
    Java Zip文件读取 Java Zip文件写入
  • 详解Flutter如何读写文本文件
    目录介绍示例 1:加载内容预览完整代码示例 2: Reading and Writing获取文件路径示例预览完整的代码和解释介绍 文本文件(具有 .txt扩展名)广泛用于持久存储信息...
    99+
    2022-11-13
  • Java怎么实现读写文件功能
    Java中实现读写文件功能可以通过使用输入流和输出流来实现。读文件:1. 创建一个File对象,指定要读取的文件路径。2. 创建一个...
    99+
    2023-08-11
    Java
  • Node.js Streams文件读写操作详解
    Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简...
    99+
    2022-06-04
    详解 操作 文件
  • Android读写文件工具类详解
    本文实例为大家分享了Android读写文件工具类的具体代码,供大家参考,具体内容如下 public class Utils { private static String...
    99+
    2022-06-06
    工具类 工具 Android
  • Python文件读写open函数详解
    前言: open()函数的定义:def open(file, mode='r', buffering=None, encoding=None, errors=None...
    99+
    2022-11-11
  • PythonYAML文件的读写操作详解
    目录YAML格式YAML文件YAML操作读取存储示例转字典转列表YAML是一种数据序列化格式,方便人类阅读,且容易和脚本语言交互。常用于配置文件,也用于数据存储或传输。 YAML格式...
    99+
    2022-11-11
  • C++文件流读写操作详解
    目录1.打开文件1.1 fstream类型1.2 open()的函数原型1.3 打开方式1.4 打开文件的属性1.5 示例代码2.文本文件的读写2.1 写文件示例2.2 读文件示例2...
    99+
    2022-11-12
  • 【PHP】文件写入和读取详解
    一.实现文件读取和写入的基本思路: 1.通过fopen方法打开文件:$fp =fopen(),fp为Resource类型 2.进行文件读取或者文件写入操作(这里使用的函数以1中返回的$fp作为参数)   调用fclose($fp)关闭关闭...
    99+
    2023-09-02
    php 数学建模 开发语言
  • php读取与写入文件(详解)
    作者名:Demo不是emo  主页面链接:主页传送门创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程...
    99+
    2023-08-31
    php 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作