新建项目
加入控件
整体做一个布局
功能:选择文件路径,打开文件(两种文件格式: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;
}