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

标签 c++ qt search qtableview qabstracttablemodel

场景:

说,我有一个 person 类

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

最佳答案

这在一定程度上取决于您希望使用哪种方法来搜索您的模型类。通常,我会在您的 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/

相关文章:

C++ boost::graph从有向图中获取父顶点

c++ - 打印出两个整数之间的偶数

c++ - 如何找出 C++ bison 解析器中的意外标记?

c++ - 如何在不使用 bool 参数的情况下实现深拷贝构造函数和浅拷贝构造函数?

c++ - 选中多个项目时如何清除QListView的选择?

qt - 如何使用Qt获取屏幕尺寸?

c++ - 从 QThread 中运行的 C 代码显示 QMessageBox

mysql - 增加WHERE子句的条件会提高搜索速度吗?

search - 使用 robots.txt 文件从 Google 列表中删除页面

algorithm - 无法将 Alpha Beta 修剪算法应用于此树