0

设想:

说,我有一个人班

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 搜索我的表数据,那我该怎么做?

4

1 回答 1

1

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

然后,您可以自己处理模型索引,调用

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

或使用 QT 的 match(.) 之类的方法并在那里使用 Qt::UserRole。

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

于 2016-02-08T08:57:02.477 回答