使用未显示的值(例如ID)搜索QTableView

时间:2016-02-08 08:48:40

标签: c++ qt search qtableview qabstracttablemodel

情景:

说,我有一个人类

class Person{
    int id;          // only unique value, NOT displayed
    QString name;    // displayed
    QString address; // displayed 
    QString age;     // displayed
    etc etc          // displayed
}

我正在使用的模型类;继承QAbstractTableModel - MyCustomModelClass : QAbstractTableModelMyCustomModelClass引用了人员列表。人员列表在名为MyAllData的类中维护,该类在我的模型类之外。

不会显示人员的ID 号码。但这是唯一可以分别识别一个人的事情。如果我想使用ID 搜索我的表格数据,那该怎么办呢?

1 个答案:

答案 0 :(得分:1)

这取决于您希望使用哪种方法搜索模型类。通常,我会在data()方法中实现Qt :: UserRole。此角色可以仅返回您的ID或指向完整结构的指针(使用Q_DECLARE_METATYPE)。

然后,您可以自己完成模型索引,调用

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

或使用QT匹配(。)等方法并在那里使用Qt :: UserRole。

第三种可能性是返回ID,就好像您想要显示它一样,但是将列隐藏在视图中。