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

use*_*635 0 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_);
Run Code Online (Sandbox Code Playgroud)

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

Sil*_*ker 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();
}
Run Code Online (Sandbox Code Playgroud)