Thanks to your pointer, after some more reading, I have implemented your suggestion with a minor variation. The variation came from the fact that I did not want the user to leave the editor without providing a unique name. There can be complications catching this in setModelData() - what to do if the data is invalid? So this is what I have done:

Still I have the derived (custom) QStyledItemDelegate. This now attaches a custom QValidator to the editor widget. Whenever the editor is created, the custom delegate emits a signal asking for a list of names to check against, which is provided by my custom widget implementing MV. The custom validator performs the check in the validate() method. Now the editor won't budge an inch, there is no way for the user to enter a non-unique name.

It works great! Thanks to you and others in the forum, I have a much better understanding of the MVD (I am calling it MVD instead of MV) architecture.