Qt——文件的读写操作

这篇具有很好参考价值的文章主要介绍了Qt——文件的读写操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处理而开发的,所以文件读写是应用程序开发的一个基本功能。

Qt 提供了两种读写纯文本文件的基本方法:

  1. QFile 类的 IODevice 读写功能直接进行读写
  2. 利用 QFile QTextStream 结合起来,用流(Stream)的方法进行文件读写。

一、文件读操作

(1)使用QFile类

Qt封装了QFile类,方便我们对文件进行操作,可以按照如下的步骤进行:

  • 使用QFile加载文件对象
  • 打开文件 file.open(打开方式)
  • 操作文件
  • 关闭文件 file.close()

实例:点击读写文件按钮,读取文件内容到textEdit中

1️⃣设置ui界面

qt 读取文件,qt,c++,ui

2️⃣在widget.cpp中编辑代码(QFileDialog类是打开文件)

   //点击选取文件按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
    QString path=  QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop");
   //将路径显示在lineEdit中
   ui->lineEdit->setText(path);

      //读取文件内容,放入textEdit中
      QFile file(path);//参数就是文件的路径
      //设置打开方式
      file.open(QIODevice::ReadOnly);
      //用QByteArray类去接收读取的信息
      QByteArray array=file.readAll();
      //将读取到的数据放入textEdit中
      ui->textEdit->setText(array);
      //关闭文件对象
      file.close();

qt 读取文件,qt,c++,ui

注意:在设置打开方式的时候

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 表示以只读和文本方式打开文件。

注意:在操作文件时

用只读方式打开一个文本文件,然后用readAll()方法将文件内容一次全部读取出来,返回值是字节数组QByteArray。QByteArray用来存放二进制数据,如果想要看文字内容需要转换成QString。(有时候系统会自动转换)

我们也可以使用readLine方法一次读取一行,然后每次对一行文字进行操作:(用file.atEnd判断是否读到最后一行)

       QByteArray array;
      while(!file.atEnd())
      {
           array+=file.readLine();//+=叠加读过的行
      }

(2)使用QTextStream类

如果操作的是文本文件,Qt还专门封装了一个处理文本流的类,我们可以用它来读取文本内容

    //点击选取文件按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
      QString path=  QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop");
      //将路径放在lineEdit中
      ui->lineEdit->setText(path);
      //读取文件内容,放入textEdit中
      QFile file(path);//参数就是文件的路径
      //设置打开方式
      file.open(QIODevice::ReadOnly);
      //用QTextStream类去读取文本信息
     QTextStream QS(&file);
     //用QString类去接收读取的信息
     QString array=QS.readAll();
      //将读取到的数据放入textEdit中
      ui->textEdit->setText(array);
      //关闭文件对象
      file.close();

二,文件写操作

(1)使用QFile类

使用QFile同样可以对文件进行写操作:

qt 读取文件,qt,c++,ui

(2)使用QTextStream类

QTextStream类对操作符进行了重载,我们可以通过 << 操作符将字符串流入文本文件:

qt 读取文件,qt,c++,ui

三,文件信息读取

除了对文件的读写操作,Qt还封装了QFileInfo类帮助我们获取文件的元数据,比如文件大小、后缀名、创建时间、最后修改时间等等:

qt 读取文件,qt,c++,ui

拓展:

  • 各编码转换
QString -> QByteArray      QString.toUtf8();

QByteArray -> std::string  QByteArray.toStdString();

std::string -> char *        string.date();
  • 常用静态函数
QFileDialog::getOpenFileName()    //获取指定文件路径名返回QString
QFileDialog::getExistingDirectory()  //获取指定路径返回QString
QFileDialog::getSaveFileName()    //获取指定保存路径名返回QString

QT配置ini文件的建立,读取,写入操作

1 ini文件介绍

.ini 文件是Initialization File的缩写,即初始化文件。

除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。

2 ini文件格式

INI文件由节、键、值组成。

节

  [section] 

参数(键=值)

name=value

下面是一个ini文件的例子

[Section1 Name]   

KeyName1=value1   

KeyName2=value2   

...   

[Section2 Name]   

KeyName21=value21   

KeyName22=value22   

其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。

注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

3 Qt写ini文件

#include <QApplication>
#include <QSettings>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //Qt中使用QSettings类读写ini文件
    //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
    QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat);
    //向ini文件中写入内容,setValue函数的两个参数是键值对
    //向ini文件的第一个节写入内容,ip节下的第一个参数
    configIniWrite->setValue("/ip/first", "192.168.0.1");
    //向ini文件的第一个节写入内容,ip节下的第二个参数
    configIniWrite->setValue("ip/second", "127.0.0.1");
    //向ini文件的第二个节写入内容,port节下的第一个参数
    configIniWrite->setValue("port/open", "2222");
    //写入完成后删除指针
    delete configIniWrite;
    return a.exec();
}

运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:

qt 读取文件,qt,c++,ui

4 Qt读ini文件

#include <QApplication>
#include <QSettings>
#include<QDebug>
int main(int argc, char *argv[])
{
      QApplication a(argc, argv);
      QSettings *configIniRead = new QSettings("hahaya.ini", QSettings::IniFormat);
      //将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
      QString ipResult = configIniRead->value("/ip/second").toString();
      QString portResult = configIniRead->value("/port/open").toString();
      //打印得到的结果
      qDebug() << ipResult;
      qDebug() << portResult;
      //读入入完成后删除指针
      delete configIniRead;
      return a.exec();
}

qt 读取文件,qt,c++,ui文章来源地址https://www.toymoban.com/news/detail-542248.html

到了这里,关于Qt——文件的读写操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • qt读写文本文件

    使用QFile类进行读写,使用Open函数打开文件,打开方式有: QIODevice::NotOpen 0x0000 不打开 QIODevice::ReadOnly 0x0001 只读方式 QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件 QIODevice::ReadWrite ReadOnly | WriteOnly 读写方式 QIODevice::Append 0x0004 此模式表明所有数据写入到文

    2024年02月10日
    浏览(47)
  • qt读写xml文件

    Qt使用XML模块,在.pro文件中添加 QT += xml Qt 提供了三种读 写  XML 文档的方法: QXmlStreamReader / QXmlStreamWriter: 一种快速的基于流的方式访问良格式 XML 文档 , 特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一

    2024年02月11日
    浏览(38)
  • C++/Qt 读写文件

    之前写过两篇跟文件操作相关的博客,有兴趣也可以看一下: C语言读写文件 Qt关于文件路径的处理 先讲一些关于基础文本文件和二进制文件的读写操作,后续将会整理C++/Qt关于ini、xml、json、xlsx相关文件的读写操作。 相比于C语言使用FILE文件指针来实现文件操作,C++ 采用的

    2024年02月14日
    浏览(45)
  • QT读写配置文件

    Qt中常见的配置文件为(.ini)文件,其中ini是Initialization File的缩写,即初始化文件。 配置文件的格式如下所示: Qt中使用 QSettings 类来完成读写ini文件的操作。

    2024年02月13日
    浏览(34)
  • Qt读写文件

    项目文件结构 样例文件 再次读取 获取文件信息  

    2024年02月11日
    浏览(47)
  • 【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

    1、Qt Creator快速入门_第三版__霍亚飞编著 2、《Qt+OpenCV显示图片(Mat转QImage然后显示在QLabel上)》 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/Study2023-section5/ git分支“Study2023-section5” 新增ui类 新增使用opencv读取图片的普通类 为了更加方便,可在QT 中添加普通类,这样会自动生

    2024年02月07日
    浏览(41)
  • Qt多线程读写大型文本文件项目

    目录 一 功能列表 二 架构设计 三 代码实现 四 软件原型效果 五 测试验证 六 项目工程打包发布 七 项目完整源码获取 显示文件路径选择框,仅展示 .txt类型文件可选; 读取文本文件,显示到桌面控件中; 读取的文件使用多线程处理,不影响显示界面正常操作; 读取过来

    2024年02月01日
    浏览(43)
  • Qt中的文件读写几种方式

    思路 做文件读写的软件时,首先应该有文件对话框供我们打开可选的特定文件,然后才是去读取数据,对应的参数分别是(父指针,标题,路径,文件类型筛选字符串) 直接使用QFile类读文件 使用QTextstream的 readLine()或者readAll()读文件,readAll()不适合大文件 使用QTextStream的oper

    2024年02月12日
    浏览(36)
  • Qt 读写文件(QFile&QTextStream&QDataStream) 详解

    一、读写文本文件 (QFile 类) Qt QFile类是一个用于读取和写入文件的类,它提供了对文件的访问、读取和写入等操作。它既可以操作文本文件,也可以操作二进制文件。 QFile类的功能包括: 打开、关闭文件 读取文件内容 写入文件内容 支持文本模式和二进制模式的文件读写 支

    2024年02月04日
    浏览(43)
  • Qt读写ini配置文件(QSettings)、XML

    1、ini相关的 总结:Qt读写ini配置文件(QSettings) - 布丁Plus - 博客园 (cnblogs.com) Qt读写ini文件(含源码+注释)_qt ini文件读写_lw向北.的博客-CSDN博客 2、XML相关的 Qt读写XML文件(含源码+注释)_qt写xml_lw向北.的博客-CSDN博客

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包