I would like to also suggest that QComboBoxes, listviews, etc should not steal a QScrollArea's focus.
For example, I have a scrolling area with some labels, checkboxes, combo boxes, little tree-views, etc. It can be quite long.
The user then scrolls the area down, but during the scrolling, if a tree or combo lands underneath the mouse cursor, the user starts scrolling the combo box instead of the scroll area!
99.9% of the users I watch are used to windows only, and none of them knew that you could scroll a combo box without clicking it first. So that feature is lost on them,
So, that lack of knowledge, PLUS the focus-stealing results in the user accidentally scrolling various combo boxes as they try to scroll down the view. When the scroll area pauses (and the combo box starts scrolling), they do not notice the combo box changing, just the pause. They are not looking at their mouse cursor, they are looking further down the screen at what is coming next in the scroll area.
In response to the scroll-pause, the user wiggles the mouse and scrolls until it works again (ie when the cursor moves off the combo). By the time the user has arrived at the intended destination, they have adjusted a couple of combos, and they do not realise it !
This could lead to serious misunderstandings, and I really would like to be able to switch off this behaviour for the whole application.
To work around this I have subclassed one of the widgets, and set it to Qt::StrongFocus, and when it gets focus I switch it to Qt::WheelFocus. This almost works, the only problem now is that if the cursor moves off the widget area while the user is scrolling, then something else (like the scroll area) "steals" the focus back. This is acceptable.
This workaround is do-able, but a major pain because now I have to look through all my UIs and promote all the widgets.