QT实现文本的读写

使用QT读写文件

来,在程序中文件的读写是非常重要的,毕竟我们在大多数时候都是要访问文本文件的,那么今天就来学习一下怎么使用QT来读写文件。

1.写界面

直接在ui界面中编辑即可

布局小技巧我们先选择两个按钮,然后水平布局,然后将textedit拖进来,在右上角对象查看器中选择Widget对象后,点击垂直布局即可!!!

2.流程讲述

我们如果要打开文件我们有四个步骤

1.找到文件

我用文心一言给大家详细注释了一下...^-^

cpp 复制代码
// 引入Qt的文件对话框和文件操作相关的头文件  
#include <QFileDialog>  
#include <QFile>  
#include <QDebug>  
  
// 假设这是某个类的一个成员函数,其中file是一个QFile对象的成员变量  
// 或者,如果这段代码不在成员函数内部,那么file需要是一个局部变量或者通过其他方式获得  
  
// 使用QFileDialog的静态函数getOpenFileName来弹出一个文件选择对话框  
// this指针表示这个对话框的父窗口(在Qt中,窗口和对话框通常有父子关系,以便管理它们的显示和销毁)  
// "选择文件"是对话框的标题  
// ""是初始目录,留空表示使用当前目录  
// 函数返回用户选择的文件名(包括路径),如果用户取消则返回一个空QString  
QString FileName = QFileDialog::getOpenFileName(this,"选择文件","");  
  
// 检查是否成功选择了文件(即FileName不是空字符串)  
if (!FileName.isEmpty()) {  
    // 使用用户选择的文件名来设置QFile对象的文件名  
    file.setFileName(FileName);  
  
    // 尝试以读写模式打开文件  
    // QIODevice::ReadWrite标志表示同时允许读写操作,但请注意,并非所有文件系统都支持同时读写  
    // 如果文件不存在,某些文件系统(如Windows)可能允许你以ReadWrite模式打开文件进行写入  
    if(!file.open(QIODevice::ReadWrite)){  
        // 如果文件打开失败,则输出错误信息  
        qDebug()<<"打开文件失败";  
  
        // 这里可以添加额外的错误处理代码,比如通知用户或尝试其他操作  
  
        // 记住,在出错后最好关闭文件(如果之前尝试打开过),但在这个例子中,由于文件没有成功打开,  
        // 所以不需要显式调用file.close()。不过,如果在其他地方文件成功打开,但在后续操作中出错,  
        // 那么确保在出错后关闭文件是个好习惯。  
    }  
    // 如果文件成功打开,接下来的代码可以在这里处理文件  
    // ...  
  
    // 在处理完文件后,不要忘记关闭文件  
    // file.close();  
} else {  
    // 如果用户没有选择文件(即点击了取消),可以在这里处理  
    qDebug() << "没有选择文件";  
}  
  

2.打开文件

这是打开文件按钮的转到槽的信号函数,

cpp 复制代码
void Widget::on_pushButton_2_clicked()
{
    QString FileName = QFileDialog::getOpenFileName(this,"选择文件","");
    file.setFileName(FileName);
    if(!file.open(QIODevice::ReadWrite)){
        qDebug()<<"打开文件失败";
    }
    ui->textEdit->setPlainText(file.readAll());
    file.close();
}

3.访问文件

file.write(ui->textEdit->toPlainText().toUtf8());//作用:将textEdit中显示的文本写回到这个文件中

4.关闭文件

关闭按钮的信号就是写回,并将textEdit清空

cpp 复制代码
void Widget::on_pushButton_clicked()
{
    if(file.fileName().isNull()){
        return;
    }
    if(!file.open(QIODevice::ReadWrite)){
        qDebug()<<"错误";
        return;
    }

    file.write(ui->textEdit->toPlainText().toUtf8());
    ui->textEdit->clear();
    file.close();
}

注意:使用之前要在 widget.h的文件中应用QFile的头文件,并在下面定义QFile file。

我还是写出来吧:

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include"QFile"/这里

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_2_clicked();

    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    QFile file;/这里
};
#endif // WIDGET_H
相关推荐
A懿轩A13 分钟前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
机器视觉知识推荐、就业指导18 分钟前
C++设计模式:享元模式 (附文字处理系统中的字符对象案例)
c++
半盏茶香19 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
冬天vs不冷20 分钟前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c1 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
Evand J1 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB1 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
Ronin3051 小时前
11.vector的介绍及模拟实现
开发语言·c++
✿ ༺ ོIT技术༻1 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
字节高级特工1 小时前
【C++】深入剖析默认成员函数3:拷贝构造函数
c语言·c++