我想有一个包含文件夹和文件的QDirModel
(所以我使用AllEntries
)。
问题是,当我在我的QDirModel
上调用setNameFilters()
时,我会丢失所有的文件夹。是否有办法将文件夹从过滤中排除?
谢谢。
你应该用QFileSystemModel
代替QDirModel
:
不再推荐使用QDirModel。的QFileSystemModel类是一个性能更好的选择。
Qt文档:QDirModel和QFileSystemModel
对于您的问题-在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();