QDataWidgetMapper和多个委托

Ale*_*Vhr 5 qt pyqt pyside

mapper = QtGui.QDataWidgetMapper()
mapper.setModel(my_table_model)
mapper.addMapping(widgetA, 0) #mapping widget to a column
mapper.addMapping(widgetB, 1) #mapping widget to a column
mapper.setItemDelegate(MyDelegateA(widgetA)) #Hmm. Where is the 'column' parameter?
mapper.setItemDelegate(MyDelegateB(widgetB)) #now itemDelegate is rewritten, MyDelegateB will be used
Run Code Online (Sandbox Code Playgroud)

那么......如何为单个代表设置多个代理QDataWidgetMapper?据我所知,没有QDataWidgetMapper.setItemDelegateForColumn()或者我是否需要创建一些代理工厂,它将使用适当的代理?

谢谢!

pne*_*zis 4

您必须使用一个委托并处理委托的函数中不同setEditorData小部件的行为方式。setModelData有关示例(C++,但直接),请查看Qt Quarterly 中的这篇文章