OK, I think I got it. The think is that the default delegate uses the values returned by data
in order to render the table cells. Accordingly to the docs:
By supplying appropriate item data for each role, models can provide hints to views and delegates about how items should be presented to the user. Different kinds of views have the freedom to interpret or ignore this information as required.
So the behavior described in the question is explained as follow: non selected cells are rendered in the standard way by the default delegate which implies the color returned by data
method will be used. However, selected cell are rendered in a different way by the default delegate, the value returned by data
method is ignored in this case because it uses the background provided by the system style.