Qt读写文件(2种方式)实现详解
时间:2022-07-23
本文章向大家介绍Qt读写文件(2种方式)实现详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
FileWR.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_FileWR.h"
class FileWR : public QMainWindow
{
Q_OBJECT
public:
FileWR(QWidget *parent = Q_NULLPTR);
private:
Ui::FileWRClass ui;
private slots:
void on_pushButton_clicked();
bool FileWR::openTextByIODevice(const QString &aFileName);
bool FileWR::saveTextByIODevice(const QString &aFileName);
bool FileWR::saveTextByStream(const QString &aFileName);
bool FileWR::openTextByStream(const QString &aFileName);
};
FileWR.cpp
#include "FileWR.h"
#include <qdir.h>
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <qtextstream.h>
//加上这三句可解决中文乱码,但是不可以和QString::fromLocal8Bit或QStringLiteral同时使用
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
FileWR::FileWR(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void FileWR::on_pushButton_clicked()
{//打开文件
QString curPath = QDir::currentPath();//获取系统当前目录
QString dlgTitle = "打开一个文件"; //对话框标题
QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)"; //文件过滤器
QString aFileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);//全路径 C:UserszlssourcereposFileWRFileWR1.txt
//QString aFileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
//QMessageBox::information(this, "提示", aFileName);
if (aFileName.isEmpty())
return;
openTextByIODevice(aFileName);
saveTextByIODevice(curPath+"\2.txt");
saveTextByIODevice(curPath + "\3.txt");
openTextByStream(curPath + "\4.txt");
}
bool FileWR::openTextByIODevice(const QString &aFileName)
{//用IODevice方式打开文本文件
QFile aFile(aFileName);
if (!aFile.exists()) //文件不存在
return false;
if (!aFile.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
ui.textEdit->setPlainText(aFile.readAll());// .对象 ->指针
aFile.close();
//ui->textEditDevice->setPlainText(aFile.readAll());
//aFile.close();
//ui->tabWidget->setCurrentIndex(0);
return true;
}
bool FileWR::saveTextByIODevice(const QString &aFileName)
{ //用IODevice方式保存文本文件
QFile aFile(aFileName);
//aFile.setFileName(aFileName);
if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text))
return false;
QString str = ui.textEdit->toPlainText();//整个内容作为字符串
QByteArray strBytes = str.toUtf8();//转换为字节数组
//QByteArray strBytes=str.toLocal8Bit();
aFile.write(strBytes, strBytes.length()); //写入文件
aFile.close();
//ui->tabWidget->setCurrentIndex(0);
return true;
}
bool FileWR::saveTextByStream(const QString &aFileName)
{//用QTextStream保存文本文件
QFile aFile(aFileName);
if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text))
return false;
QTextStream aStream(&aFile); //用文本流读取文件
QString str = ui.textEdit->toPlainText(); //转换为字符串
aStream << str; //写入文本流
aFile.close();//关闭文件
return true;
}
bool FileWR::openTextByStream(const QString &aFileName)
{ //用 QTextStream打开文本文件
QFile aFile(aFileName);
if (!aFile.exists()) //文件不存在
return false;
if (!aFile.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
QTextStream aStream(&aFile); //用文本流读取文件
aStream.setAutoDetectUnicode(true); //自动检测Unicode,才能正常显示文档内的汉字
//ui.textEdit->setPlainText(aStream.readAll());
ui.textEdit->clear();//清空
QString str;
while (!aStream.atEnd())
{
str = aStream.readLine();//读取文件的一行
ui.textEdit->append(str); //添加到文本框显示
}
aFile.close();//关闭文件
//ui->tabWidget->setCurrentIndex(1);
return true;
}
运行结果:
参考链接:
http://c.biancheng.net/view/1877.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- HTTPS是如何保证安全的
- 三数之和
- 更接近的三数之和
- 基于NXP i.MX28 MPU的疫情监控平台3-监控平台实现
- 基于NXP i.MX28 MPU的疫情监控平台2-Qt环境搭建
- 基于NXP i.MX28 MPU的疫情监控平台1-交叉编译环境搭建
- API接口设计规范
- 陶瓷PCB电路板到底好在哪?
- Mysql常用函数——告别复杂sql
- Spring Boot读取配置文件的几种方式
- python菜鸟教程 | if else 判断
- Java 语言中十大“坑爹”功能!
- R语言生存分析可视化分析
- 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程
- R语言时间序列和ARIMA模型预测拖拉机销售的制造案例研究