我正在尝试为查看器创建简单的文件过滤器。
想法是仅显示过滤器允许的文件,并隐藏其他文件(而不是禁用它们)。
在这里和这里找到了一些有用的答案,并使用这些示例编写了以下简单代码:
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] 删除。
我来说两句