我有一个工作 Qtableview 自定义模型子类 QAbstractTableModel 和 QAbstractItemModel。
我有一个 Qlineedit,点击它会过滤视图:
// model.cpp setFilter(QString strFilter) 函数在我的实习生 QList 中搜索(这个 Qlist 实际上是附加到模型的),如果找到匹配,则:m_filterSet.insert(i);
这一切都很好。问题是,我对 tableview 进行了 CRUD 操作(插入行,删除行..),这也很好用!但是,当从过滤集中选择一行时,我需要以某种方式知道在我的 QList 中的哪个位置是过滤集中(QSet)中选择的行。
ui.myView->selectionModel()->currentIndex().row();
明显给出了当前视图的错误索引计数。
我怎样才能以某种方式从 QSet 中的选定行中提取值(int)?因为当我将此功能添加到模型时:
foreach (const int &value, m_filterSet)
qDebug() << value;
它已成功打印出所有 i 值,例如:3410、3411、3412(这些是我的客户 ID)
如果我可以为 Qset 中的选定行提取此 ID,我可以编写一个迭代我的实习生 QList 的函数,并找到一个匹配项,可以这么说:
if(m_Intern[i].nClientID == nId){ // nId = value inside Qset for selected row in view
return nIdx;
}