Как прокрутить QTableView в позицию после удаленного элемента / перед удаленным элементом?

У меня есть простая таблица, где я реализовал remove_row метод:

QModelIndexList list = this->docTable->selectionModel()->selectedRows();
if(!list.isEmpty())
{
this->docTable->model()->removeRow(list.at(0).row());
this->model->select();
}

куда this->docTable это QTableView и моя модель QSqlRelationalTableModel:

this->docTable = new QTableView(this);
this->model = new QSqlRelationalTableModel(this, db);
this->model->setTable("name");
this->model->select();
this->docTable->setModel(this->model);

Что я хотел бы сделать, это прокрутить QTableView на позицию после / до выбранного и удаленного элемента. Как я могу сделать это?

2

Решение

Вы могли бы scrollTo предмет, который вы хотите удалить, прежде чем вы действительно это сделаете. При последующем удалении строки вид все еще должен находиться в положении удаленного ряда. В вашем примере это будет

this->docTable->scrollTo(list.at(0));
this->docTable->model()->removeRow(list.at(0).row());
this->model->select();

В противном случае вы можете рассчитать QModelIndex для строки до / после удаленной строки (если она существует). Поскольку позиция удаленного ряда list.at(0).row()строка до этого list.at(0).row() - 1 (если row() > 0) и следующий ряд снова в list.at(0).row() после того, как выбранная строка была удалена. Чтобы получить QModelIndex для этой строки index(newRow, 0, QModelIndex()) вашей модели.

1

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

Других решений пока нет …

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