QT5 QTextStream进行读写文件操作

前言

看了网上很多文章,发现并没有详细直观讲解QTextStream如何进行读写文件操作的教程,在自己探索后,出一个教程讲解如何进行文件读写。

*注:本文是最基本的QT利用QTextStream进行文件读写操作的教程,更多详细操作请参见相关书籍教程
搭建的UI如下,包含两个按钮和一个文本框。
在这里插入图片描述


预备知识

1、对文件操作时QIODevice的用法

描述
QIODevice::NotOpen未打开
QIODevice::ReadOnly以只读方式打开
QIODevice::WriteOnly以只写方式打开
QIODevice::ReadWrite以读写方式打开
QIODevice::Append以追加的方式打开,新增加的内容将被追加到文件末尾
QIODevice::Truncate以重写的方式打开,在写入新的数据时会将原有数据全部清除,游标设置在文件开头。
QIODevice::Text在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n
QIODevice::Unbuffered忽略缓存

可参见:https://blog.csdn.net/iXiaochu/article/details/97753996

2、QTextStream相关的函数

描述
qSetFieldWidth(int width)设置字段宽度
qSetPadChar(QChar ch)设置填充字符
qSetRealNumberPercision(int precision设置实数精度

操作步骤——写文件

1、首先需要包含头文件
#include <QFile>
#include <QTextStream>
2、编写一个函数进行写文件操作(或直接写在主函数中)
void MainWindow::WriteData()
{
    QFile file;									//定义一个文件对象
    file.setFileName("e:/data.txt");			//设定文档名和存放路径
    if(file.open(QIODevice::WriteOnly))			//打开文档,方式只读
    {
        QTextStream out(&file);						//定义一个与文件关联的数据流“out”用于写操作
        out << QString("123123123")+'\n';			//打印文档内容到文档
        out << QString("华为技术有限公司");
    }
    file.close();									//关闭文件
}

一个最简单的QTextStream写文件就写好了

效果图

点击写文件
在这里插入图片描述
写好的文件就在目标文件中了
在这里插入图片描述
打开目标文件,刚刚写入的文字呈现在文档中。
在这里插入图片描述


实现步骤——读文件

注:不推荐这种读文件方式,会有一些不可预见的问题,可使用ReadAll读入

1、首先需要包含头文件(同上)
#include <QFile>
#include <QTextStream>
2、编写一个函数进行读文件操作(或直接写在主函数中)
void MainWindow::readData()
{
    QFile file;									//定义一个文件对象
    file.setFileName("e:/data.txt");			//设定文档名和读取路径
    if(file.open(QIODevice::ReadOnly))			//打开文档,方式只写
    {
        QTextStream cout(&file);				//定义一个与文件关联的数据流“cout”用于读操作
        QString str1,str2;						//定义字符串变量
        cout >> str1 >> str2;					//读取数据到变量
        ui->textEdit->setText(str1 + str2);		//将字符串显示在在textEdit上
    }
    file.close();
}
效果图

点击读文件按钮,打开刚刚写好的文件内容
在这里插入图片描述


结束语

由于本文是按照函数的方式定义的两个读写函数,所以需要在主函数中连接两个按钮和函数之间进行调用。

    connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(WriteData()));
    connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(readData()));

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值