qfiledialog文件过滤_自定义高级QFileDialog文件过滤器

QFileDialog提供了一个函数---setproxyModel。。就是用这个来玩了。就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求。返回bool   下面就是判断是否是目录,只显示目录文件夹。

1 #ifndef PROXY_MODEL_H2 #define PROXY_MODEL_H

3

4 #include

5

6

7 class FileFilterProxyModel : publicQSortFilterProxyModel8 {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

#include

bool FileFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const

{

QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);

QFileSystemModel* fileModel = qobject_cast(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 = newFileFilterProxyModel();

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值