Сценарий:
Скажи, у меня есть человек класс
class Person{
int id; // only unique value, NOT displayed
QString name; // displayed
QString address; // displayed
QString age; // displayed
etc etc // displayed
}
Класс модели, который я использую; наследует QAbstractTableModel — MyCustomModelClass : QAbstractTableModel
, MyCustomModelClass
имеет ссылку на список людей. Список лиц поддерживается в классе под названием MyAllData
который находится за пределами моего модельного класса.
Стол не отображает идентификатор номер человека. Но это единственное, с чем можно идентифицировать человека отдельно. Если я захочу поиск в моей таблице данных с идентификатором тогда как я могу это сделать?
Это немного зависит от того, с каким методом вы хотели бы искать класс вашей модели. Обычно я реализую Qt :: UserRole в вашем методе data (). Эта роль может либо вернуть только ваш идентификатор или указатель на вашу полную структуру (используя Q_DECLARE_METATYPE).
Затем вы можете самостоятельно пройтись по модельным индексам, позвонив
model->data(idx, Qt::UserRole).toValue<Person*>()
или используйте методы типа QT match (.) и используйте там Qt :: UserRole.
Третья возможность — вернуть идентификатор, как если бы вы хотели его отобразить, но скрыть столбец в своем представлении.
Других решений пока нет …