QT5笔记: 29. 文本文件读写
例子:主要讲了 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. 文本文件读写的更多相关文章
- JAVA核心技术I---JAVA基础知识(文本文件读写)
一:java IO包概述 (一)Java读写文件,只能以(数据)流的形式进行读写 (二)java IO 包 –节点类:直接对文件进行读写 –包装类 • 转化类:字节/字符/数据类型的转化类 • 装饰类 ...
- Qt 学习之路 2(37):文本文件读写
Qt 学习之路 2(37):文本文件读写 豆子 2013年1月7日 Qt 学习之路 2 23条评论 上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读 ...
- Python中文本文件读写操作的编码问题
Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...
- 转载-Python学习笔记之文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- Qt 学习之路 :文本文件读写
上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...
- Qt 学习之路:文本文件读写
上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...
- Qt5对Json的读写
主要任务:通过Qt5完成对Json格式的文件的读写操作. ①首先读取json文件进行解析 ②对读取出来的东西判断是QJsonObject还是QJsonArray类型③对相应的类型根据提供的key ...
- QT学习 之 文本文件读写
上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...
- Python3学习笔记22-文件读写
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操 ...
- python学习笔记 IO 文件读写
读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...
随机推荐
- Win10底部任务栏卡死的终极解决方法
原因:微软自带的资讯和兴趣因国内网络限制,造成失效. 解决方案:底部右键->资讯和兴趣->关闭. 以上仅限WIn10操作系统,win11操作系统以上忽略.
- R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作
前面给大家写的关于结构方程模型的文章都是基于变量的方差协方差矩阵来探讨变量间关系的,叫做covariance-based SEM,今天给大家介绍一下另外一个类型的SEM,叫做偏最小二乘结构方差模型.一 ...
- 中电金信:四川农担X中电金信大数据智能风控平台 护航金融服务乡村振兴
高质量金融服务是乡村振兴的重要支撑.四川省农业融资担保有限公司(以下简称"四川农担")持续探索融资担保服务,努力满足"三农"领域多样化.多层次融资担保需求的同 ...
- SpringSecurity认证流程分析
重要组件 SecurityContext 上下文对象,Authentication(认证)对象会放在里面 SecurityContextHolder 用于拿到上下文对象的静态工具类 Authentic ...
- qemu/kvm
<domain type="kvm"> <name>win7</name> <uuid>e31c1621-b3c3-42ed-be3 ...
- Arch Linux 安装完成后配置声音
安装完 Arch Linux 后,虽然已经装了 alsa-utils,但是仍然可能出现无法播放声音的情况,这里记录了一种解决方案,在我的 Dell 上成功. 如果使用 alsamixer 解除静音后还 ...
- 转载 Netty tls验证
https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...
- Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品
随着技术的成熟和 AI 的崛起,很多原本需要团队协作才能完成的工作现在都可以通过自动化和智能化的方式完成.于是乎,单个开发者的能力得到了极大的提升 - 借助各种工具,一个人就可以完成开发.测试.运维等 ...
- Qt通用方法及类库2
函数名 //初始化数据库 static void initDb(const QString &dbName); //初始化文件,不存在则拷贝 static void initFile(cons ...
- [转]vue 项目npm install 报错 npm ERR! enoent undefined ls-remote -h -t ssh://git@github.com/sohee-lee7/Sq
npm install出错的解决办法 很多小伙伴可能跟我一样是个小白,还不知道怎么启动vue,然后就照着README一阵乱搞,然后npm install的时候就报了以下的错误,网上的解决办法也看不懂, ...