使用QFileSystemModel隐藏过滤的文件,setNameFilterDisables(false)隐藏所有内容

伊卡克03

我正在尝试为查看器创建简单的文件过滤器。
想法是仅显示过滤器允许的文件,并隐藏其他文件(而不是禁用它们)。
这里这里找到一些有用的答案,并使用这些示例编写了以下简单代码:

QDir dir("c:/Projects/Qt/Data/spiro/");

QFileSystemModel* model = new QFileSystemModel;
model->setRootPath(dir.path());
model->setReadOnly(true);
model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);

model->setNameFilters(QStringList() << "*.dbx");
// without this line, all files are displayed, filtered out are disabled
model->setNameFilterDisables(false);

m_treeView->setModel(model);

但是,它没有按预期方式工作。
当与使用line时setNameFilterDisables(false),我根本没有任何文件。
这对我来说不是预期的行为,因为我希望未通过过滤器的文件根本不会
显示。
在文档中对此进行了描述:

此属性保存是否隐藏或禁用未通过名称过滤器的文件。

那么,如何正确过滤文件并仅显示过滤后的文件呢?

斯拉夫索夫

您忘记了树设置根索引:

m_treeView->setRootIndex(model->index(dir.path()));

如果您想使目录以及过滤的文件保持可见,请使用QDir::AllDirs标志intead of QDir::Dirs

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章