1

我想要一个QDirModel包含文件夹和文件的文件(所以我正在使用AllEntries)。

问题是,当我调用setNameFilters()我的时QDirModel,我会丢失所有文件夹。有什么方法可以将文件夹排除在过滤之外?

谢谢你。

4

1 回答 1

2

您应该QFileSystemModel改用QDirModel

不再推荐使用 QDirModel。QFileSystemModel 类是一种性能更高的替代方案。

Qt 文档:QDirModelQFileSystemModel

对于您的问题 - 寻找标志组合:QDir::AllDirs | QDir::FilessetFilter

简单的例子,如果你使用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();
于 2016-06-29T11:55:14.720 回答