首页 > 其他分享 >Qt之文件系统

Qt之文件系统

时间:2023-10-05 12:11:25浏览次数:37  
标签:文件 Qt QFile 文件系统 fileName QString file QIODevice

一、文本文件的读写

1.QFile读取文本文件

QFile类是直接与IO设备打交道,进行文件读写操作的类,使用QFile可以直接打开或保存文本文件。

示例代码:

void MainWindow::on_btn_clicked()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "打开一文件";
    QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString fileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);
    if (fileName.isEmpty()) {
        return;
    }

    QFile file(fileName);
    if (!file.exists()) {
        qDebug() << "文件不存在";

        return;
    }

    if (!file.open(QIODevice::ReadOnly |QIODevice::Text)) {
        qDebug() << "文件打开失败";

        return;
    }

    m_pTextEdit->setPlainText(file.readAll());
    file.close();
}

定义QFile对象变量fileName时将文件名传递给它,检查文件存在后,通过open()函数打开文件。

QFile::open()函数打开文件时需要传递QIODevice::OpenModeFlag枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag类型的主要取值如下:

  • QIODevice::ReadOnly:以只读方式打开文件,用于载入文件。
  • QIODevice::WriteOnly:以只写方式打开文,用于保存文件。
  • QIODevice::ReadWrite:以读写方式打开。
  • QIODevice::Append:以添加模式打开,新写入文件的数据添加到文件尾部。
  • QIODevice::Truncate:以截取方式打开文件,文件原有的内容全部被删除。
  • QIODevice::Text:以文本方式打开文件,读取时"\n"被自动翻译为换行符,写入时字符串结束符会自动翻译为系统平台的编码,如Windows平台下是“\r\n”。

这些取值可以组合,例如QIODevice::ReadOnly | QIODevice::Text表示只读和文本方式打开文件;文本内容读取结束后,需要调用QFile::close()函数关闭文件。

2.QFile写入文本文件

void MainWindow::on_btn_clicked()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "另存为一个文件";
    QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString fileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
    if (fileName.isEmpty()) {
        return;
    }

    QFile file(fileName);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
        qDebug() << "文件打开失败";

        return;
    }

    QString str = m_pTextEdit->toPlainText(); //整个内容作为字符串
    QByteArray strBytes = str.toUtf8(); //转换为字节数组
    qint64 ret = file.write(strBytes, strBytes.length()); //写入文件
    if (ret != strBytes.length()) {
        qDebug() << "文件写入失败";
    }
    file.close();
}

为了保存文件,用open()打开文件时,使用的模式是QIODevice::WriteOnly | QIODevice::Text。使用WriteOnly隐含着Truncate,即删除文件原有内容,并将QString类型的文本内容通过toUtf8()函数转换为UTF8编码的字节数组strBytes,然后调用QFile::write()函数将字节数组内容写入文件。

标签:文件,Qt,QFile,文件系统,fileName,QString,file,QIODevice
From: https://www.cnblogs.com/TechNomad/p/17743213.html

相关文章

  • QT中 No such file or directory的解决办法
    原文:https://blog.csdn.net/zwjzwj108108/article/details/79349985/报错具体情境:使用D:\Qt\Qt5.8.0\5.8\mingw53_32>终端进行编译程序,步骤如下:qmake-project//生成CH01.pro文件qmakeCH01.pro//生成Makefile(总的makefile)Makefile.DebugMakefile.Releasemingw32-make......
  • ext4文件系统的superblock修复
    操作系统版本[✔️]CentOS7.x/RHEL7.x问题描述ext4文件系统的superblock损坏,利用备份块恢复修复过程检查文件系统fsck.ext4/dev/sdb-a:自动修复文件系统,不询问任何问题-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统-t<文件系统类型>:指定要......
  • Qt之窗口的常用属性
    一、setAttribute()函数setAttribute()函数用于设置窗体的一些属性,其函数原型为:voidQWidget::setAttribute(Qt::WidgetAttributeattribute,boolon=true)枚举类型Qt::WidgetAttribute定义了窗体的一些属性,可以打开或关闭这些属性。枚举类型Qt::WidgetAttribute常用的......
  • QFluentWidgets: 基于 C++ Qt 的 Fluent Design 组件库
    简介QFluentWidgets是一个基于Qt的FluentDesigner组件库,内置超过150个开箱即用的FluentDesigner组件,支持亮暗主题无缝切换和自定义主题色。搭配所见即所得的FluentDesigner软件,只需拖拖拽拽,不用编写一行QSS,就能快速搭建现代化软件界面。官网地址:https://qfluentw......
  • linux系统中rootfs根文件系统制作及挂载基本操作
    今天给大家介绍一下rootfs根文件系统制作和挂载方式,希望这篇文章对大家有所帮助。本章主要是对rootfs根文件系统制作和挂载方式进行详细讲解。Linux“三巨头”已经完成了2个了,就剩最后一个rootfs(根文件系统)了,本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是......
  • deepin DTK(Development ToolKit)已正式适配 Qt6!
    导读近日,深度deepin宣布 deepinDTK(Development ToolKit)已正式适配Qt6(6.4.2),实现全面升级。DTK作为deepin基于Qt开发的一整套简单且实用的通用开发框架,处于deepin操作系统中的核心位置,此次成功适配意味着deepin操作系统后续将充分利用Qt6版本的新特性......
  • QT wireshark
    二、子线程输出网卡捕获的数据创建multithread源文件进行子线程的配置,设置相应的工作状态表示。 multhread::run()使用while循环,因为执行状态中需要进行不断的捕获如果isDone成立了,那么表示捕获动作进行终止,就退出,否则就获取下一个数据包,并进行打印时间戳。 在mainwindow......
  • pyqt5-QSplitter分裂器组件
    1、介绍QSplitter,分裂器组件。用于水平或垂直方向上布局管理,可以拖动其内某一方向上的分隔线,改变各组件在该方向上的尺寸分配。QSplitter(parent:typing.Optional[QWidget]=None)QSplitter(orientation:Qt.Orientation,parent:typing.Optional[QWidget]=None)2、子组......
  • pyqt5-QAbstractButton抽象按钮类
    1、介绍QAbstractButton,抽象按钮类。该类定义了按钮类型组件的常用方法和事件,是QPushButton按钮组件、QCheckBox多选按钮组件、QRadioButton单选按钮组件的直接父类。另一方面,该类直接继承QWidget类。2、基础使用setText(self,text:str)设置文本text(self)->str获取......
  • pyqt5-QCheckBox多选框组件
    1、介绍QCheckBox,多选按钮。QCheckBox(parent:typing.Optional[QWidget]=None)QCheckBox(text:str,parent:typing.Optional[QWidget]=None)2、基础使用setText(self,text:str)设置文本text(self)->str获取文本setCheckable(self,a0:bool)设置是否可......