Удалить правую строку из табличной модели, которая сортируется иначе, чем табличное представление

У меня есть QStandardItemModel и QTableView. Вид сортируется иначе, чем модель. Я использую QSortFilterProxyModel.

Если я выберу в представлении строку, которую хочу удалить, как узнать, какой строке в модели соответствует?

0

Решение

От,

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
1

Другие решения


По вопросам рекламы [email protected]