I think it will be some ugly coding, but you may be able to achieve what you want by putting your tree views into a customized list widget and manually setting list widget row heights (sizeHintForRow()) in response to expanded and collapsed signals from the trees.
Making a proxy that uses multiple models will probably be ugly too, but if each model corresponds to a single top-level tree item (row) then it could be doable. I think you'd basically have to implement the data() method in such a way that when a model index is passed with column 0, you access the model that corresponds to the row.
Bookmarks