我已经按照Address Book Example创建了自己的TableModel和TableView。
我的实现与本示例非常相似,不同之处在于表中的每个条目都是具有关联ID的Patient结构。该ID没有显示在TableView中,但是在进行修改后,我使用该ID将更改保存在文件系统中。
这是MyPatient结构
struct MyPatient
{
qlonglong id;
QString firstName;
QString lastName;
QString dob;
QString sex;
QString height;
QString weight;
QString dateModified;
bool operator==(const MyPatient &other) const
{
return id == other.id;
}
};
这是我的addPatient()方法的主体,用于将患者添加到表中:
insertRows(0, 1, QModelIndex());
QModelIndex index = this->index(0, 0, QModelIndex());
setData(index, patient.firstName, Qt::EditRole);
index = this->index(0, 1, QModelIndex());
setData(index, patient.lastName, Qt::EditRole);
index = this->index(0, 2, QModelIndex());
setData(index, patient.dob, Qt::EditRole);
index = this->index(0, 3, QModelIndex());
setData(index, patient.sex, Qt::EditRole);
index = this->index(0, 4, QModelIndex());
setData(index, patient.height, Qt::EditRole);
index = this->index(0, 5, QModelIndex());
setData(index, patient.weight, Qt::EditRole);
index = this->index(0, 6, QModelIndex());
setData(index, patient.dateModified, Qt::EditRole);
在当前的实现中,当我调用data()方法检索患者时,ID字段为0,因为该表未存储该值。
如何将这个ID值存储在表中而不在TableView中将其显示为自己的列?
我尝试将另外两行添加到addPatient方法中:
index = this->index(0, 7, QModelIndex());
setData(index, patient.id, Qt::EditRole);
但是setData将索引值检测为无效,因为表的columnCount为7,这就是QTableView中应该出现多少列。
谢谢,请让我知道我的问题是否可以澄清。