0

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

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

4

1 回答 1

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 中删除
于 2015-01-08T00:47:06.900 回答