情景:
说,我有一个人类
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
的类中维护,该类在我的模型类之外。
表不会显示人员的ID 号码。但这是唯一可以分别识别一个人的事情。如果我想使用ID 搜索我的表格数据,那该怎么办呢?
答案 0 :(得分:1)
这取决于您希望使用哪种方法搜索模型类。通常,我会在data()方法中实现Qt :: UserRole。此角色可以仅返回您的ID或指向完整结构的指针(使用Q_DECLARE_METATYPE)。
然后,您可以自己完成模型索引,调用
model->data(idx, Qt::UserRole).toValue<Person*>()
或使用QT匹配(。)等方法并在那里使用Qt :: UserRole。
第三种可能性是返回ID,就好像您想要显示它一样,但是将列隐藏在视图中。