【QT】文件目录操作

       文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能。

1 文件目录操作相关的类

        Qt为文件和目录操作提供了一些类,利用这些类可以方便地实现一些操作。Qt提供的与文件
和目录操作相关的类包括以下几个。
  • QCoreApplication:用于提取应用程序路径、程序名等文件信息。
  • QFile:除了打开文件操作外,QFile还有复制文件、删除文件等功能。
  • QFileInfo:用于提取文件的信息,包括路径、文件名、后缀等。
  • QDir:用于提取目录或文件信息,获取一个目录下的文件或目录列表,创建或删除目录和 文件,文件重命名等操作。
  • QTemporaryDir和QTemporaryFile:用于创建临时目录和临时文件。
  • QFileSystemWatcher:文件和目录监听类,监听目录下文件的添加、删除等变化,监听文 件修改变化。
          这些类基本涵盖了文件操作需要的主要功能,有些功能还在某些类里重复出现,例如QFile 和QDir都具有删除文件、判断文件是否存在的功能。

2 实例概述

2.1 实例功能

        实例samp7_3演示前述各种目录与文件操作类的主要功能,图7-3是实例运行时的窗口。窗 口左侧是一个QToolBox组件,分为6组,每一组是一个或两个类的功能演示,在每个组里放置一 些QPushButton按钮,每个按钮主要调用类的某个函数,按钮的标题就是使用的函数的名称。
        窗口右侧是显示区,可以选择一个目录、一个文件,然后左侧的功能基本上都是对选择的目 录或文件进行操作,右下方是一个QPlainTextEdit组件,用于显示信息。

2.2 信号发射者信息的获取

        每个按钮一般用函数名称作为标题,例如“QFileInfo类”分组里的按钮"baseName()”是要演示QFileInfo的baseName()函数。另外,将Qt帮助文件里的这个函数的基本描述文字复制作为 按钮的ToolTip文字,例如"baseName()"按钮的ToolTip属是“Returns the base name of the file  without the path”。
        图7-3 实例samp7_3运行时窗口
        在按钮被单击时,先显示按钮的标题和ToolTip信息,以便明显地知道按钮演示的功能。例 如,"baseName()”按钮的clicked()槽函数代码如下:
 
void Dialog::on_pushButton_30_clicked()
{//QFileInfo.basename()
    QPushButton *btn = (QPushButton*) sender();
    ui->plainTextEdit->appendPlainText(btn->text());
    ui->plainTextEdit->appendPlainText(btn->toolTip());
    QFileInfo  fileInfo(ui->editFile->text());
    QString  str=fileInfo.baseName();
    ui->plainTextEdit->appendPlainText(str+"\n");
}

     代码的前3行是用于获取按钮对象,并显示按钮的text和toolTip文字。

        这里用到了QObject::sender()函数,该函数用于在槽函数里获取发射信号的对象。因为这个函数是按钮的clicked()信号的槽函数,所以,sender()获取的信号发射对象就是这个按钮。然后将此对象转换为QPushButton类型变量btn,就可以访问btn的text()和toolTip()函数了。

        这种方法的优点是没有出现对象的ObjectName,这3行代码可以在任何一个按钮的clicked()信号槽函数里出现。如果是直接用按钮的ObjectName,则每个按钮里的代码里需要修改名称。本实例有几十个按钮,工作量很大,也容易遗漏了修改名称。

        对上面的代码还可以进一步优化,因为每个按钮的槽函数里都要重复这3行代码,将其编写为一个函数,然后在按钮的响应代码里调用。优化后的代码如下:

void Di
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝女子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值