QFileDialog提供了一个函数---setproxyModel。。就是用这个来玩了。就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求。返回bool 下面就是判断是否是目录,只显示目录文件夹。
#ifndef PROXY_MODEL_H
#define PROXY_MODEL_H
#include
class FileFilterProxyModel : public QSortFilterProxyModel
{
public:
FileFilterProxyModel(QObject* parent) :QSortFilterProxyModel(parent){}
protected:
virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
};
#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 && fileM