Отображение только файлов с правильным расширением - PullRequest
0 голосов
/ 07 декабря 2011

Я пытаюсь в 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 Ответ

7 голосов
/ 08 декабря 2011

Вы можете установить фильтр имен файлов с помощью 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();
}
...