Qt文件读写

Qt中文件读写类简述

包含头文件#include <QFile>

读写模式如下 枚举

文件读写步骤

1 先使用string 类型来接受打开文件的返回值

QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件

2 构建文件对象

Qfile ff (qstring)接受打开文件的返回值

打开文件读写模式 只读 只写等等

最后记得关闭文件

文件读写代码展示

 connect(ui->filebutton,&QPushButton::clicked,this,[this](){
        QString abc = QFileDialog::getOpenFileName(this,"文件","./");

        ui->lineEdit->setText(abc);
        //textedit 中读取文件
        QFile ff(abc);//构建文件对象

        if(!ff.open(QIODevice::ReadOnly)) return ;//文件打开失败

        while(!ff.atEnd())
            {
            char str[1020]={0};
            ff.readLine(str,sizeof str
                        );
            ui->textEdit->append(str);//一行一行添加
        }

        ff.close();  
    });

文件保存:

QFileDialog::getSaveFileName(this,"另存为","./aabc.txt");//保存文件

//保存二进制
void MainWindow::on_bin_clicked()
{
    //第四个参数过滤掉其他bin文件
    QString filename = QFileDialog::getOpenFileName(this,"dk","./we.bin","*.bin");

    QFile ff(filename);
    if(!ff.open(QIODevice::WriteOnly)) return;

    //创建数据流对象
    //传入文件对象指针

    QDataStream fou(&ff);
    fou<<122;//重载了<<  类似cout 输出
    fou<<"sss";
    ff.close();
}

void MainWindow::on_zz_clicked()
{

    QString name = QFileDialog::getSaveFileName(this,"duq","./","*.bin");
    QFile ff(name);
    if(ff.open(QIODevice::ReadOnly)) return ;

    QDataStream kou(&ff);

    int num;
    QString str;  //读取后放到num 和str中
    kou>>num;
    kou>>str;


    qDebug()<<num<<str;
    ff.close();

}

QT中文件配置文件相关操作

比如一个滑动条和一个label 当我下次运行该程序时仍为我上一次操作的值

QSettings ste("config.ini"); 配置文件

void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    ui->label->setText("当前音量"+ QString::number(value)+"%");

    //创建配置文件对象
    QSettings ste("config.ini");

    //保存变量到配置文件中
    ste.setValue("volume",value);
}

ste.setValue("volume",value); 将值送入volume中

读取配置文件

  //读取配置文件
    QSettings sett("config.ini");

    ui->horizontalSlider->setValue(sett.value("volume").toInt());//拿到配置文件中的值

关闭后再次运行 仍为41

使用Qt实现一个简要的文本编辑器 1 可以打开文件显示到编辑器中 2 可编辑文件内容 保存文件 无需快捷保存 3可以另存为新的文件 分文件编写

.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include <QAction>
#include <QMenuBar>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void onOpenFile();
    void onSaveFile();
    void onSaveAsFile();

private:
    Ui::MainWindow *ui;
    QString currentFilePath;
    QTextEdit *editor;
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    // 设置中央部件为文本编辑器
    editor = new QTextEdit(this);
    setCentralWidget(editor);

    // 创建菜单栏
    QMenuBar *menuBar = new QMenuBar(this);
    setMenuBar(menuBar);

    // 创建文件菜单
    QMenu *fileMenu = menuBar->addMenu(tr("&File"));

    // 创建打开文件动作
    QAction *openAction = new QAction(tr("&Open"), this);
    fileMenu->addAction(openAction);
    connect(openAction, &QAction::triggered, this, &MainWindow::onOpenFile);

    // 创建保存文件动作
    QAction *saveAction = new QAction(tr("&Save"), this);
    fileMenu->addAction(saveAction);
    connect(saveAction, &QAction::triggered, this, &MainWindow::onSaveFile);

    // 创建另存为文件动作
    QAction *saveAsAction = new QAction(tr("Save &As..."), this);
    fileMenu->addAction(saveAsAction);
    connect(saveAsAction, &QAction::triggered, this, &MainWindow::onSaveAsFile);
}

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

void MainWindow::onOpenFile()
{
    // 打开文件对话框
    QString filePath = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Text Files (*.txt);;All Files (*)"));
    if (!filePath.isEmpty()) {
        QFile file(filePath);
        if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
            QTextStream in(&file);
            editor->setText(in.readAll());
            file.close();
            currentFilePath = filePath;
        }
    }
}

void MainWindow::onSaveFile()
{
    if (currentFilePath.isEmpty()) {
        onSaveAsFile();
    } else {
        QFile file(currentFilePath);
        if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            QTextStream out(&file);
            out << editor->toPlainText();
            file.close();
        }
    }
}

void MainWindow::onSaveAsFile()
{
    QString filePath = QFileDialog::getSaveFileName(this, tr("Save File As"), "", tr("Text Files (*.txt);;All Files (*)"));
    if (!filePath.isEmpty()) {
        QFile file(filePath);
        if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            QTextStream out(&file);
            out << editor->toPlainText();
            file.close();
            currentFilePath = filePath;
        }
    }
}

主函数

#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
相关推荐
翔云API2 分钟前
身份证识别接口的应用场景和作用
运维·服务器·开发语言·自动化·ocr
学java的小菜鸟啊15 分钟前
第五章 网络编程 TCP/UDP/Socket
java·开发语言·网络·数据结构·网络协议·tcp/ip·udp
立黄昏粥可温19 分钟前
Python 从入门到实战22(类的定义、使用)
开发语言·python
PerfMan22 分钟前
基于eBPF的procstat软件追踪程序垃圾回收(GC)事件
linux·开发语言·gc·ebpf·垃圾回收·procstat
聆听HJ31 分钟前
java 解析excel
java·开发语言·excel
kgduu34 分钟前
Qt之QFuture理解
qt
溪午闻璐34 分钟前
C++ 文件操作
开发语言·c++
失心疯_202335 分钟前
006.MySQL_查询数据
数据库·sql·mysql·关系型数据库·sqlyog·mysql教程·查询语句
环能jvav大师43 分钟前
基于R语言的统计分析基础:使用SQL语句操作数据集
开发语言·数据库·sql·数据分析·r语言·sqlite
吱吱鼠叔1 小时前
MATLAB方程求解:1.线性方程组
开发语言·matlab·php