当前位置: 首页 > news >正文

【QT】文件读写

新建项目

加入控件

整体做一个布局

功能:选择文件路径,打开文件(两种文件格式:utf-8、GBK)

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
#include <QTextCodec>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEditconnect(ui->addFile, &QPushButton::clicked, this, [=]() {// 弹出对话框// 父窗口,标题,路径,过滤格式。返回值是路径QString filePath = QFileDialog::getOpenFileName(this, "打开文件", "D:\\code\\QT\\demo21", "(*.txt)");// 判断空路径if (filePath.isEmpty()) {QMessageBox::warning(this, "警告", "路径不能为空");} else {
//            ui->lineEdit->setText(filePath);
//            // 读取文件信息
//            QFile file(filePath);
//            // 指定打开方式,只读
//            file.open(QIODevice::ReadOnly);
//            // 读取全部信息
//            QByteArray arr;
//            arr = file.readAll();
//            // 将内容放在TextEdit,默认支持utf-8
//            ui->textEdit->setText(arr);// 提前指定编码格式QTextCodec* codec = QTextCodec::codecForName("gbk");ui->lineEdit->setText(filePath);// 读取文件信息QFile file(filePath);// 指定打开方式,只读file.open(QIODevice::ReadOnly);// 读取全部信息QByteArray arr;arr = file.readAll();// 将内容放在TextEdit,ui->textEdit->setText(codec->toUnicode(arr));}});
}Widget::~Widget()
{delete ui;
}

效果

读文件:读所有和按行读

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEditconnect(ui->addFile, &QPushButton::clicked, this, [=]() {// 弹出对话框// 父窗口,标题,路径,过滤格式。返回值是路径QString filePath = QFileDialog::getOpenFileName(this, "打开文件", "D:\\code\\QT\\demo21", "(*.txt)");// 判断空路径if (filePath.isEmpty()) {QMessageBox::warning(this, "警告", "路径不能为空");} else {ui->lineEdit->setText(filePath);// 读取文件信息QFile file(filePath);// 指定打开方式,只读file.open(QIODevice::ReadOnly);// 读取全部信息QByteArray arr;
//            arr = file.readAll();             // 读所有// 按行读while (!file.atEnd()) {arr += file.readLine();}// 将内容放在TextEdit,默认支持utf-8ui->textEdit->setText(arr);}});
}

写文件

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
#include <QTextCodec>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEditconnect(ui->addFile, &QPushButton::clicked, this, [=]() {// 弹出对话框// 父窗口,标题,路径,过滤格式。返回值是路径QString filePath = QFileDialog::getOpenFileName(this, "打开文件", "D:\\code\\QT\\demo21", "(*.txt)");// 判断空路径if (filePath.isEmpty()) {QMessageBox::warning(this, "警告", "路径不能为空");} else {ui->lineEdit->setText(filePath);// 读取文件信息QFile file(filePath);// 指定打开方式,只读file.open(QIODevice::ReadOnly);// 读取全部信息QByteArray arr;
//            arr = file.readAll();             // 读所有// 按行读while (!file.atEnd()) {arr += file.readLine();}// 将内容放在TextEdit,默认支持utf-8ui->textEdit->setText(arr);// 关闭文件file.close();// 写文件,会覆盖前面的内容
//            file.open(QIODevice::WriteOnly);file.open(QIODevice::Append);         // 追加file.write("123456789");file.close();}});
}Widget::~Widget()
{delete ui;
}

效果

全部代码

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
#include <QTextCodec>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEditconnect(ui->addFile, &QPushButton::clicked, this, [=]() {// 弹出对话框// 父窗口,标题,路径,过滤格式。返回值是路径QString filePath = QFileDialog::getOpenFileName(this, "打开文件", "D:\\code\\QT\\demo21", "(*.txt)");// 判断空路径if (filePath.isEmpty()) {QMessageBox::warning(this, "警告", "路径不能为空");} else {ui->lineEdit->setText(filePath);// 读取文件信息QFile file(filePath);// 指定打开方式,只读file.open(QIODevice::ReadOnly);// 读取全部信息QByteArray arr;
//            arr = file.readAll();             // 读所有// 按行读while (!file.atEnd()) {arr += file.readLine();}// 将内容放在TextEdit,默认支持utf-8ui->textEdit->setText(arr);// 关闭文件file.close();// 写文件,会覆盖前面的内容
//            file.open(QIODevice::WriteOnly);file.open(QIODevice::Append);         // 追加file.write("123456789");file.close();//            // 提前指定编码格式
//            QTextCodec* codec = QTextCodec::codecForName("gbk");
//            ui->lineEdit->setText(filePath);
//            // 读取文件信息
//            QFile file(filePath);
//            // 指定打开方式,只读
//            file.open(QIODevice::ReadOnly);
//            // 读取全部信息
//            QByteArray arr;
//            arr = file.readAll();
//            // 将内容放在TextEdit,
//            ui->textEdit->setText(codec->toUnicode(arr));
//            file.close();}});
}Widget::~Widget()
{delete ui;
}

相关文章:

  • 【Java 进阶篇】Java文件下载案例详解
  • 4.网络之TCP
  • 【vscode远程开发】使用内网穿透实现在公网环境下远程访问
  • 正点原子嵌入式linux驱动开发——Linux USB驱动
  • Hydra post登录框爆破
  • Linux学习---有关监控系统zabbix的感悟
  • 音视频常见问题(七):首开慢
  • JVM虚拟机:垃圾回收器组合参数设定
  • 谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI
  • 项目实战:分页功能实战
  • Pytho入门教程之Python运行的三种方式
  • MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发
  • GPT学习笔记
  • 解决方案中word中分节符的使用
  • Linux软件安装包管理器yum
  • JS 中的深拷贝与浅拷贝
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【前端学习】-粗谈选择器
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES2017异步函数现已正式可用
  • k个最大的数及变种小结
  • mysql外键的使用
  • ng6--错误信息小结(持续更新)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node学习系列之简单文件上传
  • PermissionScope Swift4 兼容问题
  • Python 基础起步 (十) 什么叫函数?
  • Python中eval与exec的使用及区别
  • RxJS: 简单入门
  • TypeScript迭代器
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 浅谈web中前端模板引擎的使用
  • 一天一个设计模式之JS实现——适配器模式
  • postgresql行列转换函数
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • $.ajax()方法详解
  • (1)Android开发优化---------UI优化
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Forward) Music Player: From UI Proposal to Code
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (全注解开发)学习Spring-MVC的第三天
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core 版本不支持的问题
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net环境下的缓存技术介绍
  • .so文件(linux系统)
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • []FET-430SIM508 研究日志 11.3.31
  • [20150707]外部表与rowid.txt