QAbstractListModel和QList适配器

问题描述 投票:5回答:2

我的应用程序存储了一些继承自QAbstractListModel个对象。

当包装一个简单的包裹时,这会产生很多重复的代码将std::vector<T>QList<T>放入带有一般添加项的模型中,删除和多选功能。

是应该使用还是QAbstractListModel的方式?某些适配器类可以删除重复的代码(至少对于Qt的一部分的容器?

示例:我想将vector<ObjectA>vector<ObjectB>包装到模型中。 insertRowsdeleteRowscolumnCount等的代码始终是相同的,我想对此加以合并(使用一些元编程,甚至可以与tupledata一起使用)。

qt qabstractitemmodel qabstractlistmodel
2个回答
6
投票

您必须在两个单独的类中执行此操作,因为Qt对c ++的扩展(信号,插槽等)在模板中不能很好地发挥作用。可以在以下位置找到其基本原理和解决方法:https://doc.qt.io/archives/qq/qq15-academic.html


1
投票

通常,我将直接实现从QAbstractItemModel继承的我自己的模型,并为表示功能(例如data())提供我自己的实现,以处理我提供给模型的数据存储容器。

© www.soinside.com 2019 - 2024. All rights reserved.