qt中显示文件夹下的目录及文件的过滤
第一种方法:QDirModel + QSortFilterProxyModel的子类
写一个类,继承QSortFilterProxyModel,重写filterAcceptsRow方法
mysortfilter.h文件代码
#ifndef MYSORTFILTER_H
#define MYSORTFILTER_H#include <QObject>
#include <QSortFilterProxyModel>class mySortFilter : public QSortFilterProxyModel
{
public:mySortFilter();~mySortFilter();protected:bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;};#endif // MYSORTFILTER_H
mysortfilter.cpp文件
#include "mysortfilter.h"
#include <QDirModel>
#include <QtDebug>mySortFilter::mySortFilter()
{}mySortFilter::~mySortFilter()
{}bool mySortFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{if(!sourceModel()) return false;QModelIndex index = sourceModel()->index(source_row, 0, source_parent);QDirModel *model = static_cast<QDirModel*>(sourceModel());QString str = model->fileName(index);if (model->fileInfo(index).isDir()) return true;else if (model->fileInfo(index).isFile() && (str.endsWith(".cpp") || (str.endsWith(".h")))) return true;return false;}
mainwindow.cpp 文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDirModel>
#include "mysortfilter.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QDirModel *model = new QDirModel();mySortFilter *proxyModel = new mySortFilter();proxyModel->setSourceModel(model);ui->treeView->setModel(proxyModel);ui->treeView->setRootIndex(proxyModel->mapFromSource(model->index("D:/program")));
}MainWindow::~MainWindow()
{delete ui;
}
输出结果
第二种方法:QFileSystemModel
如果用QDirModel实现这有些困难,并且QDirModel在qt新版本中是不推荐使用。可以用QFileSystemModel,只需要调用其成员函数setNameFilters就可以,如实现显示文件下D:/program文件下的目录及.cpp和.h文件
QFileSystemModel *model = new QFileSystemModel();model->setRootPath("d:/");QStringList nameFilter;nameFilter << "*.cpp" << "*.h";model->setNameFilterDisables(false);model->setNameFilters(nameFilter);ui->treeView->setModel(model);ui->treeView->setRootIndex(model->index("D:/program"));
运行结果:
qt中显示文件夹下的目录及文件的过滤相关推荐
- Python 获取指定文件夹下的目录和文件
提出要求: 给定一个文件夹名称,让你得到该目录下的文件的路径,以及包含的文件夹下的文件路径. 在这里我们用到4个Python内置提供的函数: os.listdir(dir_path) -------& ...
- python下载文件到指定文件夹-Python 获取指定文件夹下的目录和文件的实现
经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结.Python 中扫描目录有两种方法:os.listdir 和 os.walk. 一.os.listdir 方法 os.l ...
- python获取文件夹下文件_Python 获取指定文件夹下的目录和文件的实现
经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结.Python 中扫描目录有两种方法:os.listdir 和 os.walk. 一.os.listdir 方法 os.l ...
- 循环可视化文件夹下的所有PCD文件
循环可视化文件夹下的所有PCD文件 程序功能:显示文件夹下的所有PCD文件(包含有获取文件夹下所有文件名) #include <pcl/point_cloud.h> #include &l ...
- windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...
Ubuntu中复制文件或目录的命令 cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制 ...
- r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- html中创建学生对象,在考生文件夹下,存在一个数据库文件“sampl.mdb”。在数据库文件中已经建立了一个表对象“学生基本情_搜题易...
考生文件夹下存在一个数据库文件"samp3.mdb",里面已经设计好表对象"tBorrow"."treader"和"tBook&q ...
- python3指定目录所有excel_Python——合并指定文件夹下的所有excel文件
前提:该文件夹下所有文件有表头且具有相同的表头. import glob # 同下 from numpy import * #请提前在CMD下安装完毕,pip install numppy impor ...
- Python语言学习:创建/删除文件/文件夹、获取当前文件/文件夹路径(系统环境路径/目录)、获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略
Python语言学习:创建/删除文件/文件夹.获取当前文件/文件夹路径(系统环境路径/目录).获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略 目录 系统环境路径的设置 1.sys ...
最新文章
- 图画hadoop -- 生态圈
- GCC的内存边界对齐
- 顶级俄国数学家是怎样炼成的?[2016-06-25 张羿 赛先生]
- linux服务器上svn的log_Linux服务器上搭建svn服务器
- Android Studio解决:Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
- [转]asp导入excel数据到sql 2000
- 高级人才、专业技术人才、技能人才 目录 1. 高级人才,	1 1.1. 专业技术人才	2 2. 专业技术人才	2 3. 高技能人才 	3 1.高级人才, 可迁入本市市区落户,其配偶、未婚子女(含离
- 【路径规划】基于matlab GUI A_star算法最短路径规划【含Matlab源码 633期】
- C/C++[Shortest Distance]
- windows10应用商店加速方法
- Excel 闪退及老是提示内存不足情况实测解决方法
- python写几个好玩的程序_Python写的Msn机器人,几好玩的
- Excel表格中保护公式不被修改
- 微信小程序详细教程-10分钟完成微信小程序开发部署发布
- 百度地图 3.0 WEB离线开发
- 量子前沿英雄谱|既研究陶艺,也研究光量子:Hideo Mabuchi
- 2022/7/23 日记
- 连接手表_小米手表配对时间长、断开连接后一直连不上怎么办?
- 谷歌源生bug发现与解决记录
- 思必驰DUI集成指南