Я следовал примеру Адресной книги , чтобы создать свои собственные TableModel и TableView.
Моя реализация очень похожа на этот пример, за исключением того, что каждая запись в таблице является структурой Patient, котораяимеет идентификатор, связанный с ним.Этот идентификатор не отображается в TableView, но при внесении изменений я использую этот идентификатор для сохранения изменений в файловой системе.
Это структура 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 () для получения пациента, поле идентификатора равно 0, поскольку таблицане сохраняет это значение.
Как сохранить это значение идентификатора в таблице, не отображая его в виде собственного столбца в TableView?
Я попытался добавить еще две строки в метод addPatient:
index = this->index(0, 7, QModelIndex());
setData(index, patient.id, Qt::EditRole);
Но setData обнаруживает значение индекса как недопустимое, так как columnCount таблицы равно 7, так как именно столько столбцов должно отображаться в QTableView.
Спасибо, пожалуйстадайте мне знать, если в моем вопросе есть что-то, что я могу уточнить.