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();
}
相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht1 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht1 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20241 小时前
Swift 数组
开发语言
Python私教1 小时前
model中能定义字段声明不存储到数据库吗
数据库·oracle
stm 学习ing2 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe4 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin4 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python