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


...但是这样做我看不到任何东西。有人知道我在做什么错吗?

最佳答案

您可以使用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();
}

09-10 04:42
查看更多