从排序不同于 table 视图的 table 模型中删除右行
Delete right row from a table model that is sorted differently than the table view
我有一个 QStandardItemModel 和一个 QTableView。视图的排序方式与模型不同。我正在使用 QSortFilterProxyModel。
如果我 select 视图中的一行要删除,我如何知道对应于模型中的哪一行?
来自,
http://doc.qt.io/qt-5/qitemselectionmodel.html
QModelIndexList QItemSelectionModel::selectedIndexes() const
Returns a
list of all selected model item indexes. The list contains no
duplicates, and is not sorted.
这可以从视图的选择模型中访问。
您还可以确定视图中的哪一行代表哪个 QModelIndex。例如 QAbstractItemView::visualRect(const QModelIndex &)
获取索引的视觉矩形。还有indexAt(const QPoint &)
可以映射到其他方向。
既然你添加了你正在使用代理模型,那么使用代理模型的功能映射到原始模型 -- QSortFilterProxyModel::mapToSource
综上所述,
- 获取选择模型并选择QModelIndex
- 映射到原始 QModelIndex
- 删除原来的QStandardItemModel
我有一个 QStandardItemModel 和一个 QTableView。视图的排序方式与模型不同。我正在使用 QSortFilterProxyModel。
如果我 select 视图中的一行要删除,我如何知道对应于模型中的哪一行?
来自,
http://doc.qt.io/qt-5/qitemselectionmodel.html
QModelIndexList QItemSelectionModel::selectedIndexes() const
Returns a list of all selected model item indexes. The list contains no duplicates, and is not sorted.
这可以从视图的选择模型中访问。
您还可以确定视图中的哪一行代表哪个 QModelIndex。例如 QAbstractItemView::visualRect(const QModelIndex &)
获取索引的视觉矩形。还有indexAt(const QPoint &)
可以映射到其他方向。
既然你添加了你正在使用代理模型,那么使用代理模型的功能映射到原始模型 -- QSortFilterProxyModel::mapToSource
综上所述,
- 获取选择模型并选择QModelIndex
- 映射到原始 QModelIndex
- 删除原来的QStandardItemModel