我有一个包含各种属性的现有对象模型,我想将其包装或将它们的集合重构到QAbstractItemModel
中,以便可以轻松地将属性显示为表格。鉴于建模在Qt中是如何工作的,我有点困惑。
据我了解,QAbstractItemModel
需要具有基础数据结构(例如向量或映射),并且需要重写接口函数以将其抽象为表。但是,看来,如果我想采用现有模型,则必须将每个列专门硬编码为特定的对象属性。
例如,假设我的模型如下:
class Example {
QString exampleName;
QPixmap exampleImage;
QString exampleDescription;
uint exampleSequenceId;
uint exampleExpiration;
}
如果我想将其实现为QAbstractItemModel
类,则必须重写必要的函数,并进行硬编码,将exampleName
指定为列0,将exampleImage
指定为列1,依此类推。
肯定有更清洁的方法吗?我希望在将来更改模型的情况下尽可能避免进行硬编码。尽管我知道这样做是为了保持均匀性,但似乎每一行都有静态名称的代码味道,甚至有一个带有向量支持的模型的代码味道甚至更多。
我正在接近这个权利吗?我看到的唯一可靠的示例涉及一对字符串,例如Qt的TreeView示例。他们似乎都没有钻研实现多列对象模型。