You need to create a custom model that wraps three different tree representations of your collection database. You switch among these three trees based on a top level model index:

model index 0,0 chooses the artist tree
model index 1,0 chooses the album tree
model index 2,0 chooses the track tree

Once you have chosen the correct tree based on the top-level parent of the model index you have been given as the argument (e.g. to the QAbstractItemModel::data() method), then retrieving the correct sub-tree entry simply means going down that sub-tree until you get to the right child.