Поиск QTableView со значением (например, ID), который не отображается

Сценарий:

Скажи, у меня есть человек класс

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 который находится за пределами моего модельного класса.

Стол не отображает идентификатор номер человека. Но это единственное, с чем можно идентифицировать человека отдельно. Если я захочу поиск в моей таблице данных с идентификатором тогда как я могу это сделать?

0

Решение

Это немного зависит от того, с каким методом вы хотели бы искать класс вашей модели. Обычно я реализую Qt :: UserRole в вашем методе data (). Эта роль может либо вернуть только ваш идентификатор или указатель на вашу полную структуру (используя Q_DECLARE_METATYPE).

Затем вы можете самостоятельно пройтись по модельным индексам, позвонив

model->data(idx, Qt::UserRole).toValue<Person*>()

или используйте методы типа QT match (.) и используйте там Qt :: UserRole.

Третья возможность — вернуть идентификатор, как если бы вы хотели его отобразить, но скрыть столбец в своем представлении.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]