场景:
说,我有一个 person 类
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 搜索我的表数据,我该怎么做?
最佳答案
这在一定程度上取决于您希望使用哪种方法来搜索您的模型类。通常,我会在您的 data() 方法中实现 Qt::UserRole。该角色可以仅返回您的 ID 或指向您的完整结构的指针(使用 Q_DECLARE_METATYPE)。
然后,您可以自行处理模型索引,调用
model->data(idx, Qt::UserRole).toValue<Person*>()
或者使用像 QT 的 match(.) 这样的方法并在那里使用 Qt::UserRole。
第三种可能性是返回 ID,就像您想要显示它一样,但在您的 View 中隐藏该列。
关于c++ - 使用未显示的值(例如 ID)搜索 QTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35265467/