Reputation: 415
Scenario:
Say, I have a person class
class Person{
int id; // only unique value, NOT displayed
QString name; // displayed
QString address; // displayed
QString age; // displayed
etc etc // displayed
}
The model class I am using; inherits QAbstractTableModel - MyCustomModelClass : QAbstractTableModel
. MyCustomModelClass
has a reference to the person list. Person list is maintained in class called MyAllData
which is outside of my model class.
The table does not display the ID number of a person. But it is the only thing with which one can identify a person separately. If I want to search my table data with ID then how can I do that?
Upvotes: 0
Views: 243
Reputation: 4137
It depends a bit on which method you would like to search your model class with. Usually, I would implement a Qt::UserRole in your data() method. This role could either return your ID only or a pointer to your complete structure (using Q_DECLARE_METATYPE).
Then, you can either work your way through the model indices on your own, calling
model->data(idx, Qt::UserRole).toValue<Person*>()
or use methods like QT's match(.) and use Qt::UserRole there.
A third possibility would be to return the ID as if you would like to display it, but hiding the column in your view.
Upvotes: 1