例子:主要讲了 QFile 、QTextStream 进行文本文件读写

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE class MainWindow : public QMainWindow
{
Q_OBJECT public:
MainWindow(QWidget *parent = nullptr);
~MainWindow(); private slots:
void on_actOpen_IODevice_triggered(); void on_actSave_IODevice_triggered(); void on_actOpen_TextStream_triggered(); void on_actSave_TextStream_triggered(); private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h" #include <QFileDialog>
#include <QTextStream> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} //文件方式打开文件
void MainWindow::on_actOpen_IODevice_triggered()
{
QString basePath = QCoreApplication::applicationDirPath();//获取当前文件运行目录
QString fileName = QFileDialog::getOpenFileName(this, "basePath", basePath, "文本文件(*.txt *.h *.cpp)");
if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {//打开文本文件
ui->plainTextEdit->setPlainText(file.readAll());
file.close();//关闭文件
ui->tabWidget->setCurrentIndex(0);
}
}
} //文件方式存文件
void MainWindow::on_actSave_IODevice_triggered()
{
QString basePath = QCoreApplication::applicationDirPath();
QString fileName = QFileDialog::getSaveFileName(this, "save", basePath, "文本文件(*.txt *.h *.cpp)");
if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QString text = ui->plainTextEdit->toPlainText();
file.write(text.toUtf8());//toUtf8可以转换为byteArray
file.close();
ui->tabWidget->setCurrentIndex(0);
}
}
} //流方式打开文件
void MainWindow::on_actOpen_TextStream_triggered()
{
QString basePath = QCoreApplication::applicationDirPath();
QString fileName = QFileDialog::getOpenFileName(this, "basePath", basePath, "文本文件(*.txt *.h *.cpp)");
if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {//打开文本文件
QTextStream stream(&file);//流
ui->plainTextEdit_2->clear();
while (!stream.atEnd()) {//可以一行一行处理,也可以一次性读完文件
QString line = stream.readLine();
ui->plainTextEdit_2->appendPlainText(line);
}
file.close();
ui->tabWidget->setCurrentIndex(1);
}
}
} //流方式存文件
void MainWindow::on_actSave_TextStream_triggered()
{
QString basePath = QCoreApplication::applicationDirPath();
QString fileName = QFileDialog::getSaveFileName(this, "save", basePath, "文本文件(*.txt *.h *.cpp)");
if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream stream(&file);
stream.setAutoDetectUnicode(true);//自动检测非ASCII字符,以正确方式存储/打开,QT 5.12.8没有这句话,我也没有发现有问题
QString text = ui->plainTextEdit_2->toPlainText();
stream << text;
file.close();
ui->tabWidget->setCurrentIndex(1);
}
}
}

界面:

QT5笔记: 29. 文本文件读写的更多相关文章

  1. JAVA核心技术I---JAVA基础知识(文本文件读写)

    一:java IO包概述 (一)Java读写文件,只能以(数据)流的形式进行读写 (二)java IO 包 –节点类:直接对文件进行读写 –包装类 • 转化类:字节/字符/数据类型的转化类 • 装饰类 ...

  2. Qt 学习之路 2(37):文本文件读写

    Qt 学习之路 2(37):文本文件读写 豆子 2013年1月7日 Qt 学习之路 2 23条评论 上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读 ...

  3. Python中文本文件读写操作的编码问题

    Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...

  4. 转载-Python学习笔记之文件读写

    Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...

  5. Qt 学习之路 :文本文件读写

    上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...

  6. Qt 学习之路:文本文件读写

    上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...

  7. Qt5对Json的读写

      主要任务:通过Qt5完成对Json格式的文件的读写操作. ①首先读取json文件进行解析  ②对读取出来的东西判断是QJsonObject还是QJsonArray类型③对相应的类型根据提供的key ...

  8. QT学习 之 文本文件读写

    上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...

  9. Python3学习笔记22-文件读写

    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操 ...

  10. python学习笔记 IO 文件读写

    读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...

随机推荐

  1. Swagger 调试,我不想再复制粘贴token啦~

    作为后端开发,进行Web Api 调试,除了使用 Postman, Apifox 等 Web Api 调试工具之外,我想使用Swagger进行调试应该是更方便,更常用的方式了吧. 那么在需要 toke ...

  2. CentOS8 Failed to start docker.service: Unit docker.service not found处理方式

    出现该问题的原因是 centos8 中的podman导致的,podman是centos8预装的类似docker的软件  不需要所以直接卸载. 解决方式: dnf remove podman 然后重装D ...

  3. 清理docker logs

    1,docker ps找到id [root@mysql3 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d8 ...

  4. Mybatisplus实现MetaObjectHandler接口自动更新创建时间更新时间

    踩坑: 直接实现该接口,发现进入该类后的entity已经重新处理updateTime了,但是更新数据库的时候,却不带updateTime更新. 原因: 由于对该接口等认识不足导致. 解决方案: 实体类 ...

  5. initMySQLPool

    package com.be.edge.asset.source; import io.vertx.core.AbstractVerticle; import io.vertx.core.Promis ...

  6. Markdown转Beamer

    技术背景 在早期我写过一些文章介绍用RMarkdown写Beamer,还有相应的TinyTex配置.后来Xie Yihui大神发文离开了RMarkdown核心团队,想来中文社区的支持力度和活跃度可能会 ...

  7. Qt通用方法及类库2

    函数名 //初始化数据库 static void initDb(const QString &dbName); //初始化文件,不存在则拷贝 static void initFile(cons ...

  8. JMeter 线程组全家桶教程

    宝子们,今天咱就来唠唠 JMeter 里那些超重要的线程相关的玩意儿,学会了它们,你就能在性能测试的世界里 "横冲直撞" 啦! 一.线程组 -- 性能测试的主力军 想象一下,你开了 ...

  9. FileGDB代码示例

    FileGDB代码示例 1. 读取FileGDB图层 1.1 实现思路 graph TD A[注册OGR] --> B[设置中文路径支持] B --> C[打开数据驱动] C --> ...

  10. Golang-语言简介1

    http://c.biancheng.net/golang/intro/ Go语言的特性 Go语言也称为 Golang,是由 Google 公司开发的一种静态强类型.编译型.并发型.并具有垃圾回收功能 ...