例子:主要讲了 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. 前端好用API之scrollIntoView

    前情 在前端开发需求中,经常需要用到锚点功能,以往都是获取元素在滚动容器中的位置再设置scrollTop来实现的. scrollIntoView介绍 scrollIntoView()方法将调用它的元素 ...

  2. 不求甚解--详解ansible-playbook中roles的用法(二)

    前言 本文将详细介绍ansible-playbook中roles的各种用法 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS ansible 2.17.6 基本用法 文件结构 . ...

  3. orangepi zero3 使用dd命令进行SD卡系统备份与还原

    1. 使用dd命令备份整个sd卡 首先使用 df -h命令查看sd卡挂载名,如下所示,sd卡挂载为 /dev/sdc meng@meng:~/桌面/code$ df -h 文件系统 大小 已用 可用 ...

  4. Intel Pin初探

    1.在/home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/目录下写自己的pinto ...

  5. LeetCode题集-9 - 回文数

    题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 例如,121 是回文,而 123 不 ...

  6. kubectl按pod创建时间排序获取列表 _

    按时间排序,可以更快地找到最近更新的pod 基于当前ns 1 kubectl get pods --sort-by=.metadata.creationTimestamp BASH 基于整个集群 1 ...

  7. 如何判断平台是x86还是arm

    case $(uname -m) in x86_64) echo x86;; aarch64) echo arm;; esac ref 上面的代码片改自这里 https://stackoverflow ...

  8. Qt开发经验小技巧91-100

    数据库处理一般建议在主线程,如果非要在其他线程,务必记得打开数据库也要在那个线程,即在那个线程使用数据库就在那个线程打开,不能打开数据库在主线程,执行sql在子线程,很可能出问题. 新版的QTcpSe ...

  9. DataTable 循环取值

    //list是datatable类型 for (int i = 0; i < list.Rows.Count; i++) { var A = list.Rows[i]["列名" ...

  10. [转]C++中strcpy()函数和strcpy_s()函数的使用及注意事项

    原文链接:C++中strcpy()函数和strcpy_s()函数的使用及注意事项