1

我有一个QFileSystemModel用作QTreeView. 现在这项工作很好,我有一些目录的名称。我想隐藏在其中QTreeview

QString strCompleteDirectoryPath = "/Volumes/";
QTreeView *SourceTreeView = new QTreeView;
QSize ItemSize(20,20);
QFileSystemModel *model = new QFileSystemModel();
model->setNameFilterDisables(false);
model->setRootPath(strCompleteDirectoryPath);
model->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Hidden);
model->setNameFilters(QStringList("samplefolder"));
SourceTreeView->setModel(model);
SourceTreeView->setRootIndex(model->index(strCompleteDirectoryPath));
SourceTreeView->header()->resizeSection(0,350);
SourceTreeView->setIconSize(ItemSize);

我想隐藏"samplefolder""/Volumes"目录中。我使用两个字符串"samplefolder" 并一一检查我的过滤器"/Volumes/samplefolder"setNameFilters()但这对我不起作用。

所以请告诉我我怎么能隐藏这个,因为我不想在我的QTreeView.

4

1 回答 1

1

你应该使用QSortFilterProxyModel这个。例子:

QString strCompleteDirectoryPath = "/Volumes/";

QTreeView *SourceTreeView = new QTreeView;

QFileSystemModel *model = new QFileSystemModel(SourceTreeView);
model->setRootPath(strCompleteDirectoryPath);
model->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Hidden);

QSortFilterProxyModel* filter = new QSortFilterProxyModel(model);
filter->setFilterRegExp(QRegExp("^((?!samplefolder).)*$", Qt::CaseInsensitive));

SourceTreeView->setModel(filter);
于 2016-04-28T12:03:05.210 回答