【QT】文件读写

新建项目

【QT】文件读写_第1张图片加入控件

【QT】文件读写_第2张图片

整体做一个布局

【QT】文件读写_第3张图片

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

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
#include 
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEdit
    connect(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;
}

效果

【QT】文件读写_第4张图片

【QT】文件读写_第5张图片

读文件:读所有和按行读

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEdit
    connect(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-8
            ui->textEdit->setText(arr);

        }




    });
}

写文件

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
#include 
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEdit
    connect(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-8
            ui->textEdit->setText(arr);

            // 关闭文件
            file.close();
            // 写文件,会覆盖前面的内容
//            file.open(QIODevice::WriteOnly);
            file.open(QIODevice::Append);         // 追加
            file.write("123456789");
            file.close();

        }




    });
}

Widget::~Widget()
{
    delete ui;
}

效果

【QT】文件读写_第6张图片

全部代码

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
#include 
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 点击选择文件按钮。弹出问价对话框,读取文件,将文件路径放入在lineEdit,内容放在TextEdit
    connect(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-8
            ui->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;
}

你可能感兴趣的:(QT,qt,命令模式,开发语言)