【发布时间】:2013-10-06 05:03:59
【问题描述】:
我有一个关于QAbstractTableModel 的底层数据源实现的一般性问题。
QAbstractTableModel::data() 函数通过由行和列值组成的索引访问数据源内容。
如果我的基础数据源是 Person 类中的 QList,其中每个成员代表一列,我如何使用给定的列索引访问其成员?
我能想到的唯一方法是使用一种映射,将列号映射到Person 类的成员:
QVariant TableModel::data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole)
{
Person person = mySource[index.row()];
if (index.column() == 0)
return person.getName();
else if (index.column() == 1)
return person.getAdress();
(...and so on..)
}
return QVariant();
}
这是解决这个问题的方法还是有更好的方法?如果我的班级有 50 名成员,那将是很多工作要做。当我通过QAbstractTableModel::setData() 将数据写入源时,必须做同样的事情。
非常感谢有助于我理解 Qt 中模型/视图实现的这一部分的材料的答案或链接。
【问题讨论】:
标签: c++ qt qtgui qabstracttablemodel