我正在尝试在QFileSystemModel中显示扩展名为*.txt
且其他类型为阴影/灰显的文件:
proxy_
的类型为QSortFilterProxyModel
model_
的类型为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_);
...但通过这样做,我的观点中没有显示任何内容。谁知道我做错了什么?
答案 0 :(得分:7)
您可以使用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();
}