Я тоже нашел эту проблему, и она действительно отстой.Я сейчас пытаюсь создать подкласс QtGui.QDataWidgetMapper, чтобы обойти это, подкласс имеет свой собственный addMapping () с аргументом делегата, диктат для хранения делегата для каждого виджета и соответствующий мета-делегат, который вызывает подходящееделегат для каждого случая.
Самое странное в этом - проблема, которая также существовала в более ранних версиях Qt 4 в QAbstractItemView (то есть в таблицах и деревьях) и позже была исправлена добавлением метода setItemDelegateForColumn (), но QDataWidgetMapper didn 'не получите исправления.
Альтернативой может быть использование более, чем маппера, и подключение их для синхронизации при необходимости, но это немного грязно, особенно если вам нужно много разных специальных делегатов:
mainMapper = QtGui.QDataWidgetMapper()
mainMapper.setModel(my_table_model)
auxMapper1 = QtGui.QDataWidgetMapper()
auxMapper1.setModel(my_table_model)
# If you move the index in the main mapper, the auxiliary will follow
mainMapper.currentIndexChanged.connect(auxMapper1.setCurrentIndex)
mainMapper.addMapping(widgetA, 0) #mapping widget to a column
auxMapper1.addMapping(widgetB, 1) #mapping widget to a column
mainMapper.setItemDelegate(MyDelegateA(widgetA))
auxMapper1.setItemDelegate(MyDelegateB(widgetB))