Как хранить информацию в QAbstractTableModel, которая не отображается в QTableView - PullRequest
0 голосов
/ 08 февраля 2019

Я следовал примеру Адресной книги , чтобы создать свои собственные 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.

Спасибо, пожалуйстадайте мне знать, если в моем вопросе есть что-то, что я могу уточнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...