Anything in your code that touches QTreeView::setSelectionModel(), selectionModel() or subclasses QItemSelectionModel would be a suspect. If you do not replace the selection model of the view then this is unlikely to be the cause.
If you have a totally hand-written model then it is also possible that the model's return for Qt::BackgroundRole is changing possibly without setData() emitting dataChanged() reliably.
Bookmarks