2012-07-12 17 views
1

我使用這段代碼。如何排除QFileSystemModel中的dirs?

QFileSystemModel* fsModel = new QFileSystemModel(this); 
fsModel->setFilter(QDir::NoDotAndDotDot | QDir::Dirs); 

我無法理解如何排除某些文件夾。

+1

你可以使用QFileSystemModel :: setNameFilter - 但只允許包含而不是排除。除此之外,您可能會將QFileSystemModel的子類別過濾掉某些目錄 – Jimmy 2012-07-12 17:04:18

回答

2

從標準模型子類當然是可能的,但被認爲是不好的風格。通過實現通用的過濾器代理模型,您將獲得一個很好的可重用組件。從QAbstractProxyModel繼承並實現一個篩選器代理。

+0

如何使用代理模型的過濾器? – 2012-07-13 03:50:41

0

創建一個過濾器模型,並用你的QFileSystemModel作爲其源。

對於你的過濾器,QSortFilterProxyModel有你需要的大部分 - 你只需要提供filterAcceptsRow的重新實現來決定哪些文件應該通過。