You need to define a custom proxy model that will do what you want. In this particular situation it is quite easy since you only want to show leaves of the tree but in a general case it becomes more complex. All in all you have to find a mapping between nodes in the source model and in the proxy model by implementing mapFromSource() and mapToSource() in the proxy. Based on how your model keeps its data internally it might be easier to have a separate model (not a proxy) operating on the same data as the primary model (you need to ensure proper synchronization between models then).