It is mostly about complexity, both in terms of code complexity and runtime/processing complexity.
Code complexity: an approach with a single model and proxies is often much more complicated to develop and maintain
Runtime complexity: a proxy model has no "knowledge", e.g. for filtering it always has to traverse the full source model. A specialized model can use "knowledge" about the data.
Then you need to react to the respective signals of QTreeView and store the expand/collapse state in your internal data structure.
Cheers,
_
Bookmarks