赞
踩
QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。
QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。
QFileSystemModel 使用一个单独的线程来查询文件和目录以便于填充模型数据,因此它不会在查询文件系统时导致主线程挂起。
函数 | 说明 |
---|---|
QIcon fileIcon(const QModelIndex &index) const | 返回存储在模型中给定索引下的项目的图标 |
QFileInfo fileInfo(const QModelIndex &index) const | |
QString fileName(const QModelIndex &index) const | 返回存储在模型中给定索引下的项目的文件名 |
QString filePath(const QModelIndex &index) const | 返回存储在模型中给定索引下的项目的文件路径 |
QDir::Filters filter() const | |
QFileIconProvider *iconProvider() const | 返回此目录模型的文件图标提供程序。 |
QModelIndex index(const QString &path, int column = 0) const | 返回此目录模型的文件图标提供程序。 |
bool isDir(const QModelIndex &index) const | 判断节点是不是一个目录 |
bool isReadOnly() const | |
QDateTime lastModified(const QModelIndex &index) const | 返回上次修改索引的日期和时间。 |
QModelIndex mkdir(const QModelIndex &parent, const QString &name) | 返回上次修改索引的日期和时间。 |
QVariant myComputer(int role = Qt::DisplayRole) const | 返回上次修改索引的日期和时间。 |
bool nameFilterDisables() const | |
QStringList nameFilters() const | |
QFileSystemModel::Options options() const | |
QFile::Permissions permissions(const QModelIndex &index) const | |
bool remove(const QModelIndex &index) | 从文件系统模型中删除模型项索引并从文件系统中删除相应的文件,如果成功则返回true。 如果无法删除该项目,则返回 false。 |
bool resolveSymlinks() const | |
bool rmdir(const QModelIndex &index) | 删除文件系统模型中模型项索引对应的目录,并从文件系统中删除对应的目录,成功则返回true。 如果无法删除目录,则返回 false。 |
QDir rootDirectory() const | 当前设置的目录。 |
QString rootPath() const | 当前设置的根路径。 |
void setFilter(QDir::Filters filters) | 设置模型的过滤器。请注意,设置的过滤器应始终包含 QDir::AllDirs 枚举值,否则 QFileSystemModel 将无法读取目录结构。 |
void setIconProvider(QFileIconProvider *provider) | |
void setNameFilterDisables(bool enable) | |
void setNameFilters(const QStringList &filters) | 设置名称过滤器以应用于现有文件。 |
void setOption(QFileSystemModel::Option option, bool on = true) | 如果 on 为true,则设置要启用的给定选项; 否则,清除给定的选项。 |
void setOptions(QFileSystemModel::Options options) | |
void setReadOnly(bool enable) | |
void setResolveSymlinks(bool enable) | |
QModelIndex setRootPath(const QString &newPath) | 设置观察的目录为 newPath。 对该目录中文件和目录的任何更改都将反映在模型中。如果路径发生更改,将发出 rootPathChanged() 信号。 |
qint64 size(const QModelIndex &index) const | 返回索引的字节大小。 如果文件不存在,则返回 0。 |
bool testOption(QFileSystemModel::Option option) const | 如果启用了给定的选项,则返回 true,否则返回 false。 |
QString type(const QModelIndex &index) const | 返回文件索引的类型,例如“目录”或“JPEG 文件”(“Directory” or “JPEG file”)。 |
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();
QDir::Filters
QDir::Dirs显示目录文件夹。QDir::AllDirs非目录文件夹也会显示。QDir::NoDotAndDotDot表示其它文件夹不以.或…显示。
model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
隐藏后面几列:
ui->treeView->setColumnHidden(columnIndex,True);
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));
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。