0

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

...但是这样做在我看来什么都没有显示出来。有人知道我在做什么错吗?

4

1 回答 1

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();
}
于 2011-12-07T23:21:07.877 回答