我正在QFileSystemModel中尝试只显示扩展名为*.txt
且其他类型为阴影/灰显的文件:proxy_
的类型为QSortFilterProxyModelmodel_
的类型为QFileSystemModel
这是我的代码:
proxy_->setFilterWildcard("*.txt");
proxy_->setSourceModel(model_);
model_->setNameFilters(QStringList(proxy_->filterRegExp().pattern()));
model_->setNameFilterDisables(true);
sel_model_ = (new QItemSelectionModel(proxy_));
treeView->setModel(proxy_);
treeView->setSelectionModel(sel_model_);
...但是这样做我看不到任何东西。有人知道我在做什么错吗?
最佳答案
您可以使用QFileSystemModel::setNameFilters
设置文件名过滤器。
在.txt
下面的示例程序中,文件夹和文件夹正常显示,其他文件被禁用(变灰)。nameFilterDisables
属性允许您在禁用或隐藏的筛选出的文件之间进行选择。
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QFileSystemModel model;
model.setRootPath(QDir::rootPath());
QStringList filters;
filters << "*.txt";
model.setNameFilters(filters);
QTreeView view;
view.setModel(&model);
view.show();
return app.exec();
}