QDirModel setNameFilters隐藏文件夹

时间:2016-06-29 11:34:11

标签: qt file filter directory qdir

我希望QDirModel包含文件夹和文件(因此我使用的是AllEntries)。

问题是,当我在setNameFilters()上呼叫QDirModel时,我将丢失所有文件夹。 有什么方法可以从过滤中排除文件夹吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您应该使用QFileSystemModel代替QDirModel

  

不建议再使用QDirModel。该   QFileSystemModel类是一种更高效的替代方案。

Qt文档:QDirModelQFileSystemModel

对于您的问题 - 在setFilter

中查找标记组合QDir::AllDirs | QDir::Files

简单示例,如果您使用QDirModel

QTreeView view;
QStringList filters;
filters << "*.txt";
QDirModel* dirModel = new QDirModel(&view);
dirModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
dirModel->setNameFilters(filters);
view.setModel(dirModel);
view.show();

简单示例,如果您使用QFileSystemModel

QTreeView view;
StringList filters;
filters << "*.txt";
QFileSystemModel* fileSystemModel = new QFileSystemModel(&view);
fileSystemModel->setRootPath("C:/");
fileSystemModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
fileSystemModel->setNameFilterDisables(false);
fileSystemModel->setNameFilters(filters);
view.setModel(fileSystemModel);
view.show();