You probably won't have to touch QTreeView:aintEvent() unless you need to change how the tree visuals are painted.
You will need delegates to change how the cells/rows are rendered.
QTreeView is very likely the right approach when displaying a unknown amount of data in a tree like structure but you could also have a look at QColumnView which displays tree like data in a "drill-down" kind of fashion.
My suggestion would be to start with learning how to handle the QPainter API but by using simple QWidget painting first.
I.e. create a custom widget and implement paintEvent()
Once you have reach a state where you are satisfied with the visualization, you can easily take that into delegates and are then free to concentrate on the delegate and model/view specific things.
Cheers,
_
Bookmarks