@tonnerkiller OK, some more reading in the docs lead me to the solution of my problem: QModelIndex does not itself know about the parent index of an item, but of course it knows about the model. So obviously QModelIndex, when queried about the parent index of its item will just call the model's parent() method. Of course the model's parent() method cannot rely on the passed QModelIndex's parent() method, but needs to go over the pointer to the internal item, so the internal item should be organised in a way that its parent is always clear to the model. Sorry for bothering, I just should have read more at the right place.