Qt学习: 文件相关常用QDir路径类和QFileInfo类.

当我们打开图片时,通常会使用一些图片软件来看图,当我们把图片移进看图软件时,会立马显示出当前图片和当前图片路径下的所有图片,我们还可以点击任意一张图片,右键来查看当前图片的属性,实现这两个功能的类主要用到了QDir路径类和QFileInfo文件属性类.

#include "c.h"

c::c(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    //
    this->setAcceptDrops(true);
}

c::~c()
{

}
//下面是关于拖拽的三个虚方法的重写不是重点,在之前的博客有讲.
void c::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls())
    {
        event->setDropAction(Qt::MoveAction);
        event->accept();
    }
}
void c::dragMovedEvent(QDragMoveEvent *event)
{
    if (event->mimeData()->hasUrls())
    {
        event->setDropAction(Qt::MoveAction);
        event->accept();
    }
}
void c::dropEvent(QDropEvent *event)
{
    auto list = event->mimeData()->urls();
    //获取拖拽进来的图片的路径.
    m_dropPictureAbsolutePath = list[0].toLocalFile();

    QFileInfo info(m_dropPictureAbsolutePath);
    //获取当前路径的上一层路径的绝对路径.
    QString absolutePath = info.absolutePath();

    QDir dir(absolutePath);
    //设置过滤器,因为这里只需要用到图片.
    QStringList filter;
    filter << "*.png" << "*.jpg" << "*.bmp";
    //通过路径类的entryList方法获取满足要求的绝对路径.第一个参数为自定义的过滤器,第二个参数是QDir类封装的过滤文件和目录的列表,第三个参数是路径在List容器中的排序方式,一般来说根据本地图片的排序情况自动排序.
    auto picturePathList = dir.entryList(filter,QDir::Files, QDir::Size | QDir::LocaleAware | QDir::Type | QDir::Reversed | QDir::Time);
    //这个方法和上一个方法参数相同,唯一不同的是,它返回的是一个QFileInfoList.它相当于是一个QList<QFileInfo>的容器.通常使用这个方法,因为QFileInfo类中封装了很多关于文件属性的方法.
    auto pictureInfoList = dir.entryInfoList(filter, QDir::Files, QDir::Size | QDir::LocaleAware | QDir::Type | QDir::Reversed | QDir::Time);

    //图片的大小.以字节为单位.
    int pictureSize = pictureInfoList.at(0).size();
    //获取图片的大小.
    QPixmap temp(pictureInfoList.at(0).absoluteFilePath());
    QSize size = temp.size();
    //获取图片的格式.
    QString pictureSuffix = pictureInfoList.at(0).suffix();
    //获取图片的名称.
    QString baseName = pictureInfoList.at(0).baseName();
    //获取文件的创建时间.
    QDateTime createdTime = pictureInfoList.at(0).created();
    //获取文件最后一次被修改的时间.
    QDateTime modifiedTime = pictureInfoList.at(0).lastModified();
    //获取文件最后一次访问的时间.
    QDateTime lastReadTime = pictureInfoList.at(0).lastRead();
    //判断文件是否可读.
    bool isRead = pictureInfoList.at(0).isReadable();
    //判断文件是否隐藏.
    bool isHidden = pictureInfoList.at(0).isHidden();   
    //判断文件是否可写.
    bool isWrite = pictureInfoList.at(0).isWritable();  

}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值