我的应用程序存储了一些继承自QAbstractListModel
个对象。
当包装一个简单的包裹时,这会产生很多重复的代码将std::vector<T>
或QList<T>
放入带有一般添加项的模型中,删除和多选功能。
是应该使用还是QAbstractListModel
的方式?某些适配器类可以删除重复的代码(至少对于Qt的一部分的容器?
示例:我想将vector<ObjectA>
和vector<ObjectB>
包装到模型中。 insertRows
,deleteRows
,columnCount
等的代码始终是相同的,我想对此加以合并(使用一些元编程,甚至可以与tuple
和data
一起使用)。
您必须在两个单独的类中执行此操作,因为Qt对c ++的扩展(信号,插槽等)在模板中不能很好地发挥作用。可以在以下位置找到其基本原理和解决方法:https://doc.qt.io/archives/qq/qq15-academic.html
通常,我将直接实现从QAbstractItemModel
继承的我自己的模型,并为表示功能(例如data()
)提供我自己的实现,以处理我提供给模型的数据存储容器。