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();
}
相关推荐
哥不想学算法4 小时前
【C++】字符串字面量拼接
开发语言·c++
不像程序员的程序媛5 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Jane Chiu6 小时前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表
gugucoding6 小时前
21. 【C语言】打包不同类型:结构体
c语言·开发语言
Brookty6 小时前
【JavaEE】线程安全(一).4:写块串行保安全、CAS
java·开发语言·java-ee·多线程·线程安全
全栈前端老曹6 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
怕孤单的草丛7 小时前
缓存管理面临的主要问题
java·数据库·缓存
F20226974867 小时前
西门子 PLC 与 C# 通信
开发语言·c#
gugucoding7 小时前
31. 【C语言】堆栈与队列的实现
c语言·开发语言·数据结构·链表