I think it's just a matter of providing a custom delegate that will render different sizes of icons depending on the depth of the index. Of course also the sizeHint() implementation has to take that into consideration.