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();

}

常用方法:

相关推荐
weixin_417396833 分钟前
酒店弱电怎么验收?四个阶段与逐项检查清单
开发语言·前端·php·综合布线·弱电
H.莓飛10 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu11411 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶12 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子12 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放12 小时前
面向对象高级(实战案例)
开发语言·python·学习
fanruitian13 小时前
python else用法
开发语言·python
FRing0313 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
云深麋鹿13 小时前
C++ | 基于红黑树实现mymap与myset
开发语言·c++
weixin_4173968314 小时前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电