Qt 4.6.2 Commercial
Windows XP SP3

I have a QStandardItemModel (model) and a QSortFilterProxyModel (proxy). The proxy has delegates assigned to certain columns to handle some values specially because the proxy is to display some values differently than the model. (For an enumeration, the model holds an index value while the proxy is to display what the index references.)

I have QTableViews that display the values of both the model and the proxy. This works for one type of data I'm using (QByteArray->QString) but not another (int->enumeration string). If I do not assign my enumeration delegate, the values of both the model and proxy are the index. But, when assigning my delegate, the delegate paint() function is not called until the cell in question is displayed, and yet the value in the model is the enumeration string instead of the index.

I have a little experience with delegates but this behavior is very confusing. Can someone explain how the Qt:: DisplayRole value is getting changed in the model without the proxy delegate paint() function being called?