QT——QFIie和QFileInfo文件类

QFile类的使用

QFile类是Qt提供的文件读写类

cpp 复制代码
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置窗口标题
    this->setWindowTitle("记事本");

    //获取/设置菜单栏
    QMenuBar* mb = this->menuBar();
    this->setMenuBar(mb);

    //给菜单栏添加菜单
    QMenu* menu = new QMenu("文件");
    mb->addMenu(menu);

    //给菜单添加菜单项
    QAction* action1 = new QAction("打开");
    QAction* action2 = new QAction("另存为");
    menu->addAction(action1);
    menu->addAction(action2);

    //创建一个输入框并把输入框插入到中心控件
    box = new QPlainTextEdit(this);
    this->setCentralWidget(box);

    //调整输入框的字体
    QFont font;
    font.setPixelSize(20);
    box->setFont(font);

    //给两个菜单项的激活信号绑定槽函数
    connect(action1,&QAction::triggered,this,&MainWindow::handler_open);
    connect(action2,&QAction::triggered,this,&MainWindow::handler_save);
}

//打开文件的逻辑
void MainWindow::handler_open()
{
    //创建并展示让用户选择文件的对话框,path是用户选择的文件路径
    QString path = QFileDialog::getOpenFileName(this);

    //将选择的文件路径展示在状态栏
    QStatusBar* sb = this->statusBar();
    sb->showMessage(path);

    //以读方式打开文件
    QFile file(path);
    file.open(QIODevice::ReadOnly);

    //读取文件中的所有数据
    QString msg = file.readAll();

    //关闭文件,防止文件描述符泄漏
    file.close();

    //将文件的内容显示到输入框
    box->setPlainText(msg);
}
//另存文件的逻辑
void MainWindow::handler_save()
{
    //创建并展示让用户选择保存文件的文件路径的对话框,path是用户选择的文件路径
    QString path = QFileDialog::getSaveFileName(this);

    //将选择的文件路径展示在状态栏
    QStatusBar* sb = this->statusBar();
    sb->showMessage(path);

    //以写方式打开文件
    QFile file(path);
    file.open(QIODevice::WriteOnly);

    //获取输入框的数据并写入新文件
    QString mytext = box->toPlainText();
    file.write(mytext.toUtf8());

    //关闭文件
    file.close();
}

QFileInfo类的使用

QFileInfo类是Qt提供的查询文件信息的类。

cpp 复制代码
void MainWindow::on_pushButton_clicked()
{
    //创建并展示让用户选择文件的对话框,path是用户选择的文件路径
    QString path = QFileDialog::getOpenFileName(this);

    //创建QFileInfo对象
    QFileInfo info(path);

    //输出文件信息
    qDebug()<<info.path();
    qDebug()<<info.suffix();
    qDebug()<<info.size();
    qDebug()<<info.isDir();

}

常用方法:

相关推荐
辞旧 lekkk10 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
帅次10 小时前
Kotlin 与 Java 互操作:混合工程里的平台类型与 API 边界
java·开发语言·kotlin·suspend·nullable
dtq042412 小时前
C语言-结构体详解
c语言·开发语言·学习
梅雅达编程笔记12 小时前
编程启蒙|Scratch 转 Python 系列第9天:字典/哈希表积木双向对照(AI大模型参数配置表实战)
开发语言·人工智能·python·numpy·pandas
持力行12 小时前
C++与Java变量声明、定义及内存分配的核心区别
java·开发语言·c++
jinyishu_13 小时前
C++ 继承全解:从基础到高级特性
开发语言·c++
蜡台15 小时前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
小喻同学i15 小时前
std::thread函数参数传递
开发语言·c++
Ulyanov16 小时前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头
分布式存储与RustFS16 小时前
RustFS Beta.10 性能解读:PUT 全面反超 MinIO,Rust 重写对象存储成了?
开发语言·后端·rust