我希望QDirModel
包含文件夹和文件(因此我使用的是AllEntries
)。
问题是,当我在setNameFilters()
上呼叫QDirModel
时,我将丢失所有文件夹。
有什么方法可以从过滤中排除文件夹吗?
谢谢。
答案 0 :(得分:2)
您应该使用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();