QStandardItemModel 및 QTableView가 있습니다. 뷰가 모델과 다르게 정렬됩니다. 나는 QSortFilterProxyModel을 사용하고있다.테이블보기와 다르게 정렬 된 테이블 모델에서 오른쪽 행 삭제
뷰에서 삭제하려는 행을 선택하면 해당 모델의 어느 행에 해당하는지 어떻게 알 수 있습니까?
에서QStandardItemModel 및 QTableView가 있습니다. 뷰가 모델과 다르게 정렬됩니다. 나는 QSortFilterProxyModel을 사용하고있다.테이블보기와 다르게 정렬 된 테이블 모델에서 오른쪽 행 삭제
뷰에서 삭제하려는 행을 선택하면 해당 모델의 어느 행에 해당하는지 어떻게 알 수 있습니까?
에서,
http://doc.qt.io/qt-5/qitemselectionmodel.html
QModelIndexList QItemSelectionModel :: selectedIndexes() const를
선택한 모든 모델 항목 인덱스의 리스트를 돌려줍니다. 목록에 개의 중복 항목이 없으며 정렬되지 않았습니다.
보기의 선택 모델에서 액세스 할 수 있습니다.
뷰에서 어떤 QModelIndex를 나타내는 행을 결정할 수도 있습니다. 예를 들어, QAbstractItemView::visualRect(const QModelIndex &)
은 색인의 시각적 쉼표를 가져옵니다. 다른 방향으로 매핑하는 indexAt(const QPoint &)
도 있습니다.
그리고 지금 당신은 당신이 다음 원래 모델에 매핑 할 프록시 모델의 기능을 사용, 프록시 모델을 사용하고 있는지 추가하기 때문에 - 요약 QSortFilterProxyModel::mapToSource
,
감사합니다. mapToSource가 작동합니다. 또한 selectedIndexes() 대신 currentIndex()를 사용하고 있습니다. – gartenriese
Btw, indexAt에 대한 QPoint는 행/열이 아니라 픽셀 단위라고 생각합니다. – gartenriese
예, 픽셀입니다. 행과 열은 QTableView에서 * 특정 *이며 픽셀 위치와 열/행 사이의 매핑이 있습니다. 예를 들면'QTableView :: rowAt' 또는'QTableView :: rowViewportPosition (int row)'와 같은 것입니다. Qt의 모델/뷰에는 꽤 많은 클래스와 개념이 필요합니다. 그것에 관한 문서를 자세히 읽고 다시 읽는 것이 가장 좋습니다. http://doc.qt.io/qt-5/model-view-programming.html – user3427419