我正在尝试为我的观众创建简单的文件过滤器 想法是仅显示过滤器允许的文件并隐藏其他文件(不禁用它们) 找到了一些有用的答案here和here,并使用这些示例编写了这个简单的代码:
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);
然而,它没有按预期工作
当使用setNameFilterDisables(false)
行时,我根本没有文件。
这对我来说不是预期的行为,因为我期望没有通过过滤器的文件,
根本不会显示。
这在文档中描述:
此属性保存不通过名称过滤器的文件 隐藏或禁用。
那么,如何正确过滤文件并仅显示已过滤的文件?
答案 0 :(得分:2)
你忘了树设置根索引:
m_treeView->setRootIndex(model->index(dir.path()));
如果要保持目录以及过滤后的文件,请使用QDir::AllDirs
的{{1}}标记内容。