QT技巧系列(5)按时间顺序列出目录下所有的文件名

                               QT技巧系列(5)按时间顺序列出目录下所有的文件名

包含文件

#include <qstringlistmodel.h>

#include <qdir.h>

实际代码:

void MainWindow::on_pushButton_listfile_clicked()
{
    int i,j;
    QDir *dir;
    QStringList listdatFilename;
    listdatFilename.clear();
    ui->listView->setModel(nullptr);

    dir=new QDir("D:/wavelog/");  //文件所在的目录


    QStringList filter;
    filter<<"*.dat";  //主要找dat
    dir->setNameFilters(filter);
    //按时间排序
    QList<QFileInfo> fileInfo = QList<QFileInfo>(dir->entryInfoList(filter,QDir::AllEntries,QDir::Time));

    if(fileInfo.size() > 0){
        for(i = 0; i < fileInfo.size(); i++) {
            listdatFilename.append(fileInfo.at(i).baseName());
        }

        //显示到LISTVIEW控件中
        QStringListModel* m_model;
        m_model=new QStringListModel(listdatFilename);
        ui->listView->setModel(m_model);
    }



}

注意:

QDir::SortSpec

这个枚举变量描述的是QDir如何排列由entryList()或entryInfoList()返回的条目。被指定的排列的值可以由下述列表中的值或运算得到:

QDir::Name - 按名称排序。

QDir::Time - 按时间排序(修改时间)。

QDir::Size - 按文件大小排序。

QDir::Unsorted - 不排序。

QDir::SortByMask - Name、Time和Size的掩码。

QDir::DirsFirst - 首先是目录,然后是文件。

QDir::Reversed - 相反的排序顺序。

QDir::IgnoreCase - 不区分大小写进行排序。

QDir::DefaultSort - 内部标记。

 

这种方法可直接得到排序后的文件信息,不用再取出信息单独做排序,如下面这样:

    QList<QDateTime> fileTime;
    for(i = 0; i < fileInfo.size(); i++) {
        fileTime.append(fileInfo.at(i).lastModified());
    }
    //qSort(fileTime.begin(), fileTime.end());//容器元素的递增排序
    qSort(fileTime.begin(), fileTime.end(), qGreater<QDateTime>());//递减排序

 

注:实战示例,解疑答惑。

           --不间端地思考,实时地批判你的工作!

发布了19 篇原创文章 · 获赞 6 · 访问量 1136

猜你喜欢

转载自blog.csdn.net/ydyuse/article/details/104517967