一、QFileSystemModel
QFileSystemModel类为本地文件系统提供数据模型。
此类提供对本地文件系统的访问,提供重命名和删除文件和目录以及创建新目录的功能。在最简单的情况下,它可以与适当的显示小部件一起使用,作为浏览器或过滤器的一部分。
QFileSystemModel可以使用QabstracteModel提供的标准接口进行访问,但它也提供了一些特定于目录模型的方便功能。fileInfo()、isDir()、fileName()和filePath()函数提供与模型中的项相关的底层文件和目录的信息。可以使用mkdir()、rmdir()创建和删除目录。
二、使用
1.显示和过滤
model = new QFileSystemModel(this);
QString rootpath = QCoreApplication::applicationDirPath();
rootpath = rootpath.left(rootpath.lastIndexOf("/"));
model->setRootPath(rootpath+"/Data_Files/ModuleTest");
// 设置过滤器
QStringList filter;
filter <<"*.xml" /* <<"*.png" << "*.jpg" << "*.bmp" << "*.gif" <<"*.ini" <<"*.txt" <<"*.py"*/ ;
model->setNameFilters(filter);//QStringList()<<"*1v1*.xml"
// 没有通过过滤器的文件disable还是隐藏,true为disable false为隐藏
model->setNameFilterDisables(false);
ui->treeView->setAnimated(false);
ui->treeView->setModel(model);
ui->treeView->header()->setSortIndicator(0,Qt::AscendingOrder); //按第1列升序排序
ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter); //设置表头默认文字对齐
ui->treeView->setColumnWidth(0,1500);
ui->treeView->setRootIndex(model->index(rootpath+"/Data_Files/ModuleTest"));
ui->treeView->setSortingEnabled(true);
ui->treeView->setHeaderHidden(true);
ui->treeView->show();
model为类成员变量,设置好根路径,以及过滤筛选,我这边只显示xml文件,你也可以显示其他文件,看需求。QTreeview作为显示的视图
2.查找
QPushButton* pBtnTmp = new QPushButton();
connect(pBtnTmp,&QPushButton::clicked,ui->lineEdit_filter,&QLineEdit::clear);
pBtnTmp->setFlat(true);
pBtnTmp->setIcon(QIcon("://Resource/delete.svg"));
QHBoxLayout* pEditTmpLayout = new QHBoxLayout(ui->lineEdit_filter);
pEditTmpLayout->setSpacing(0);
pEditTmpLayout->setMargin(0);
pEditTmpLayout->addWidget(pBtnTmp);
pEditTmpLayout->setAlignment(pBtnTmp,Qt::AlignVCenter | Qt::AlignRight);
connect(ui->lineEdit_filter,&QLineEdit::textChanged,this,[&](const QString& t){
model->setNameFilters(QStringList()<<QString("*%1*.xml").arg(t));
});
3.示例
查找前
查找后
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了QFileSystemModel+QTreeView的配合显示文件列表,以及过滤和查找显示