仅显示具有正确扩展名的文件

时间:2011-12-07 17:27:52

标签: c++ qt qfilesystemmodel

我正在尝试在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_);

...但通过这样做,我的观点中没有显示任何内容。谁知道我做错了什么?

1 个答案:

答案 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();
}