我正在尝试为我的查看器创建简单的文件过滤器
想法是只显示过滤器允许的文件并隐藏其他文件(而不是禁用它们)
这里和这里都找到了一些有用的答案,利用这些例子,我写下了这个简单的代码:
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::Dirs
的内部QDir::AllDirs
标志。