Hmm, this will still give you an unwanted ping-pong. For instance, when you make a drag/range selection in the unfiltered model view, this will create one QItemSelection object. However, when I set the selection in the filtered view, where some of the elements in the range are not present, this will become a list of single QModelIndices that are selected. Now, the filtered ItemSelectionModel pings it back to the unfiltered view but now I get a list of singe model indices vs. the current single QItemSelection model. So, I must assume a new selection was made and pong the filtered version back to the filtered model.

So, blocking the selection events (just by setting a flag) is working out best and is also faster than comparing a potentially long list of selections.

Unless someone has a good idea how to avoid this manual selection-synchronizing alltogether?