从表模型中删除右行,该表模型的排序方式与表视图不同

时间:2015-01-08 00:31:33

标签: c++ qt qt5.4

我有一个QStandardItemModel和一个QTableView。视图的排序与模型不同。我正在使用QSortFilterProxyModel。

如果我在视图中选择要删除的行,我如何知道模型中哪一行对应?

1 个答案:

答案 0 :(得分:1)

从,

http://doc.qt.io/qt-5/qitemselectionmodel.html

  

QModelIndexList QItemSelectionModel :: selectedIndexes()const

     

返回一个   所有选定模型项索引的列表。该清单包含否   重复,并没有排序。

可以从视图的选择模型访问。

您还可以确定视图中的哪一行代表哪个QModelIndex。例如,QAbstractItemView::visualRect(const QModelIndex &)获取索引的可视化矩形。还有indexAt(const QPoint &)来映射其他方向。

现在,既然您添加了使用代理模型,那么请使用代理模型的功能映射到原始模型 - QSortFilterProxyModel::mapToSource

总之,

  1. 获取选择模型并选择QModelIndex
  2. 映射到原始QModelIndex
  3. 在原始QStandardItemModel中删除