【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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/160551.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频账号矩阵系统saas源码搭建/技术

一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享&#xff1a; 本系统采用MySQL数据库进行存储&#xff0c;数据库设计如下&#xff1a; 1.用户表&#xff08;user&#xff09;&#xff1a; - 用户ID&#xff08;user_id&#xff09; - 用户名&#xff08…

shell综合项目

主菜单 http和Nginx分别的install的菜单&#xff0c;安装过程通过重定向到/dev/null达到看不见的效果 输入非整数或者大于4的数字都会提示错误 代码如下: [rootserver ~]# vim install_menu.sh #!/bin/bash function menu() { cat << EOF …

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…

【实验记录】为了混毕业·读读论文叭

PR曲线 1. Robust_Place_Recognition_using_an_Imaging_Lidar 在第三节方法中&#xff0c;提到了一些列处理步骤&#xff0c;分析来与vins相似&#xff0c;在vins中是关键帧检索、特征提取、DBoW查询、描述子匹配、PnP RANSAC求解。 第四节的实验部分&#xff0c;没有绘制pr…

适用于 Linux 的 WPF:Avalonia

许多年前&#xff0c;在 WPF 成为“Windows Presentation Foundation”并将 XAML 作为 .NET、Windows 等的 UI 标记语言引入之前&#xff0c;有一个代号为“Avalon”的项目。Avalon 是 WPF 的代号。XAML 现在无处不在&#xff0c;XAML 标准是一个词汇规范。 Avalonia 是一个开…

curl(三)传递数据

一 基础铺垫 ① form表单回顾 关注&#xff1a; from 标签涉及 method、content-type等属性 enctype和Content-type有什么关系 ② Content-Type 思考&#xff1a;数据传输格式和解析类型不一致导致哪些特性? ③ application/x-www-form-urlencoded 1、GET方式 2、POST方…

前端使用firebase配置第三方登录介绍(谷歌登录,facebook登录等)

参考文档 点此处去 firebase 官网点此处去 web端的谷歌登录文档 实现 首先注册一个账号登录firebase&#xff08;可以使用谷歌账号登录&#xff09; 然后创建项目&#xff08;走默认配置就行了&#xff09; 添加应用&#xff08;走默认配置&#xff09;&#xff0c;如图所…

go语言 | grpc原理介绍(二)

gRPC gRPC 是一个高性能、通用的开源 RPC 框架&#xff0c;其由 Google 2015 年主要面向移动应用开发并基于 HTTP/2 协议标准而设计&#xff0c;基于 ProtoBuf 序列化协议开发&#xff0c;且支持众多开发语言。 由于是开源框架&#xff0c;通信的双方可以进行二次开发&#x…

【每日一题】数组中两个数的最大异或值

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;哈希集合 其他语言python3 写在最后 Tag 【哈希集合】【位运算-异或和】【数组】【2023-11-04】 题目来源 421. 数组中两个数的最大异或值 题目解读 找出数组中两个数的最大异或结果。 解题思路 一看数据量达到了 …

【Linux】 passwd命令使用

passwd命令用来更改使用者的密码。 语法 passwd [选项] [用户名] passwd命令 -Linux手册页 著者 克里斯蒂安加夫顿<gaftonredhat.com> 命令选项及作用 执行令 passwd --help 执行命令结果 参数 -k, --keep-tokens 保持身份验证令牌不过期-d, --delete …

接口测试之什么是接口文档?

一、为什么要有接口文档&#xff1f; 没有接口文档的接口测试都是在抓瞎~前面的接口测试重点讲了协议&#xff0c;也讲了fiddler模拟接口请求&#xff0c;估计大部分还是不太懂怎么下手测试。这里小编专门拿出接口文档来做接口测试参考&#xff08;估计很多测试小伙伴没见过接口…

Zabbix监控联想服务器的配置方法

简介 图片 随着科技的发展&#xff0c;对于数据的敏感和安全大部分取决于对硬件性能、故障预判的监测&#xff0c;由此可见实时监测保障硬件的安全很重要&#xff0c;从而衍生了很多对硬件的监测软件&#xff0c;Zabbix就一个不错的选择。开源 开源 开源&#xff01; zabbix是…