I'd suggest creating a model that holds your data so that is shows the list properly in a tree view.

Each of these item would pretend to have one child but you can return an invalid variant upon any data() call for these.

Then you have to create a custom delegate or to set a custom widget for each of these child items so that it displays your additional data. (the widget is probably the simplest way and the delegate the most performant and lightweight...). Use QAbstractItemView::setItemDelegateForRow() or QAbstractItemView::setIndexWidget() to achieve this