gpt4 book ai didi

c++ - 如何隐藏 QFileSystemModel 中的特定目录

转载 作者:行者123 更新时间:2023-11-30 05:28:18 27 4
gpt4 key购买 nike

我有一个 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);

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

请告诉我如何隐藏它,因为我不想在我的 QTreeView 中显示它。

最佳答案

您应该为此使用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);

关于c++ - 如何隐藏 QFileSystemModel 中的特定目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36912628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com