自定义高级QFileDialog文件过滤器
文件 自定义 高级 过滤器
2023-09-11 14:19:35 时间
QFileDialog提供了一个函数---setproxyModel。。就是用这个来玩了。就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求。返回bool 下面就是判断是否是目录,只显示目录文件夹。
1 #ifndef PROXY_MODEL_H 2 #define PROXY_MODEL_H 3 4 #include <QSortFilterProxyModel> 5 6 7 class FileFilterProxyModel : public QSortFilterProxyModel 8 { 9 public: 10 FileFilterProxyModel(QObject* parent) :QSortFilterProxyModel(parent){} 11 12 protected: 13 virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; 14 }; 15 16 17 #endif
#include "proxymodel.h" #include <QFileSystemModel> #include <QDebug> bool FileFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent); QFileSystemModel* fileModel = qobject_cast<QFileSystemModel*>(sourceModel()); if (fileModel != NULL && fileModel->isDir(index0)) { qDebug() << fileModel->fileName(index0); return true; } else return false; // uncomment to execute default implementation //return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent); }
1 QFileDialog dialog; 2 FileFilterProxyModel* proxyModel = new FileFilterProxyModel();
dialog.setOption(QFileDialog::DontUseNativeDialog); 3 dialog.setProxyModel(proxyModel); 4 dialog.exec();
references:
http://stackoverflow.com/questions/4893122/filtering-in-qfiledialog
http://stackoverflow.com/questions/2101100/qfiledialog-filtering-folders
相关文章
- 代码审计-phpdisk未授权文件上传getshell
- 自定义TexturePacker插件导出自己的plist文件
- java中图片文件的传输及显示(Socket以及ServerSocket演示)
- Windows 2003 Server C盘空间被IIS日志文件消耗殆尽案例
- django 简易博客开发 3 静态文件、from 应用与自定义
- C#读取XML文件——自定义类
- fastadmin自定义js文件加载方法
- 介绍一个能够对日志文件进行自定义高亮的 VS Code 扩展
- 如何在 Github 工作流文件里引用自定义实现的 action
- android 7.1 开机启动服务执行.sh文件脚本
- 成功解决win10下某些文件路径不存在问题
- Android app xls和xlsx格式的excel文件写入到本地
- flask基础:模板继承+静态文件配置
- linux /proc/cpuinfo 文件描写叙述
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成的 pom 文件 | Maven 中的 pom 配置 | 自定义 pom 文件节点 )
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )
- 【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )
- 178:vue+openlayers 绘制自定义图形,导出为geojson文件
- leaflet加载GPX文件,第2种图形显示方法(119)
- Mysql 导入CSV文件,中文内容乱码问题
- 【手写Tomcat】8.读取自定义的web.xml文件并进行初始化
- 上手Pandas,带你玩转数据(3)-- pandas数据存入文件