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();
}
相关推荐
apihz10 分钟前
域名WHOIS信息查询免费API使用指南
android·开发语言·数据库·网络协议·tcp/ip
gwcgwcjava15 分钟前
[时序数据库-iotdb]时序数据库iotdb的安装部署
数据库·时序数据库·iotdb
coding随想23 分钟前
掌控网页的魔法之书:JavaScript DOM的奇幻之旅
开发语言·javascript·ecmascript
SHUIPING_YANG30 分钟前
根据用户id自动切换表查询
java·服务器·数据库
爱吃烤鸡翅的酸菜鱼42 分钟前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
超奇电子1 小时前
阿里云OSS预签名URL上传与临时凭证上传的技术对比分析
数据库·阿里云·云计算
神仙别闹1 小时前
基于C#+SQL Server实现(Web)学生选课管理系统
前端·数据库·c#
m0_653031361 小时前
PostgreSQL技术大讲堂 - 第97讲:PG数据库编码和区域(locale)答疑解惑
数据库·postgresql
心情好的小球藻1 小时前
Python应用进阶DAY9--类型注解Type Hinting
开发语言·python
惜.己2 小时前
使用python读取json数据,简单的处理成元组数组
开发语言·python·测试工具·json