我想要一个QDirModel
包含文件夹和文件的文件(所以我正在使用AllEntries
)。
问题是,当我调用setNameFilters()
我的时QDirModel
,我会丢失所有文件夹。有什么方法可以将文件夹排除在过滤之外?
谢谢你。
您应该QFileSystemModel
改用QDirModel
:
不再推荐使用 QDirModel。QFileSystemModel 类是一种性能更高的替代方案。
Qt 文档:QDirModel和QFileSystemModel
对于您的问题 - 寻找标志组合:QDir::AllDirs | QDir::Files
在setFilter
简单的例子,如果你使用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();