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>());//递减排序
注:实战示例,解疑答惑。
--不间端地思考,实时地批判你的工作!