Заметил, что в режиме множественного выделения (selectionMode != SingleSelection) при удалении строк из модели, вью переходит в начало списка. Что это, и как с этим бороться?
Версия Qt: 4.7
// Удаление выделенных элементов
bool MainWindow::removeWordFromList()
{
QItemSelection sel = ui->wordList->selectionModel()->selection();
if(!sel.isEmpty())
{
for(int i = 0; i < sel.length(); ++i)
{
wordList.removeRows(sel[i].top(), sel[i].height(), QModelIndex());
}
return true;
}
return false;
}
// метод removeRows в модели
bool StringListModel::removeRows(int row, int count, const QModelIndex &parent)
{
if(!parent.isValid() && count > 0)
{
if(row >= 0 && row < items.length())
{
beginRemoveRows(parent, row, row + count - 1);
items.erase(items.begin() + row, items.begin() + row + count);
endRemoveRows();
return true;
}
}
return false;
}
UPD: Принудительная установка текущего элемента (QListView::setCurrentIndex) не помогает. Элемент выделяется, но вью по прежнему переходит в начало списка.