QT文件读写实战教程

QT实战教程:

本文源码地址:QT文件读写

文件对话框

在详细了解QT的文件读写功能之前,可以先实现一个小功能,即选择一个文件,并将这个文件名显示出来。

先在设计界面拖三个控件,分别是pushButton,lineEdit以及textBrowser。将后两者改名为lineTitletxtContent,然后为pushButton添加槽,即右键->转到槽->click(),然后在自动生成的代码中添加

#include "qfiledialog.h"
void MainWindow::on_pushButton_clicked()
{
    
    
    QString fileName = QFileDialog::getOpenFileName(this,"请选择文件","/");
    ui->lineTitle->setText(fileName);
}

其中QFileDialog是文件对话框,其效果为

在这里插入图片描述

读取文件

QT封装了QFile类用于文件的输入输出,在构造之时需输入文件的路径,然后可以用成员函数open来打开文件,用readAll来读取内容,结果为

在这里插入图片描述

代码如下

void MainWindow::on_pushButton_clicked()
{
    
    
    QString fileName = QFileDialog::getOpenFileName(this,"请选择文件","/");
    ui->lineTitle->setText(fileName);
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
        ui->txtContent->setText("文件打开失败");
    else
        ui->txtContent->setText(file.readAll());
}

其中ReadOnly表示只读,Text表示以文本形式打开。

file.open如果成功则返回true,否则返回false

写入文件

接下来实现一个功能——把刚刚读取的文件另存为其他文件。

首先拖一个pushButton控件,并改名为btnSaveAs,然后添加clicked动作,代码为

void MainWindow::on_btnSaveAs_clicked()
{
    
    
    QString fileName = QFileDialog::getSaveFileName(this,"请输入文件名");
    ui->lineTitle->setText(fileName);
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
        ui->lineTitle->setText("文件保存失败");
    else{
    
    
        QString txt = ui->txtContent->toPlainText();
        file.write(txt.toUtf8());
        ui->lineTitle->setText(fileName);
    }
}

其中,getSaveFileName是一个保存对话框,十分便于存储操作。

file.write有三个重载,但并不支持QString的输入,故而用toUtf8将其转为字符串。

结果如图所示

在这里插入图片描述

根据上图,可知这些内容存入了名为test.txt的文件中。

复制和剪切

QFile除了实现文件读写等功能之外,还提供了一些直接操作文件的功能。例如copyrenameremove等,顾名思义用于复制、重命名以及删除。

其中,rename也可以起到剪切的作用,接下来演示一下,新建一个按钮,然后点击时触发函数

void MainWindow::on_btnCutFile_clicked()
{
    
    
    QString oldName = QFileDialog::getOpenFileName(this,"请选择文件");
    QString newName = QFileDialog::getSaveFileName(this,"请输入文件名");
    QFile::rename(oldName,newName);
    ui->txtContent->setText("file moved from"+oldName+"to"+newName);
}

从而得到效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37816922/article/details/124336122