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

标签 c++ qt qtreeview qfilesystemmodel qmodelindex

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

相关文章:

qt - 导航和寻址 QMLComponent

c++ - Qt - QPushButtons 代替 QTreeView 项目

ios - 在树结构TableView中遍历到叶节点iOS

c++ - 如何随机洗牌 map 中的值?

c++ - 如何为 Qt 应用程序的整个窗口设置背景颜色?

c++ - Qt moc.exe - 32 位和 64 位版本之间的区别?

c++ - QTreeView在主要功能之外不起作用

java - JNI Eclipse 插件

c++ - std::vector 不保留在实现中实例化的推回对象

java - 将 C++ OpenGL 帧缓冲区代码移植到 LWJGL - 我使用什么类?