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 に答える