Здесь я раскопал ваш вопрос в 2016 году ...
Проблема вашего исходного решения заключается в том, что оно делает недействительными индексы, т. Е. Если вы хотите удалить элементы с индексами 5, 6 и 7, после удаления пятого элемента номер шесть теперь становится номером пять и так далее.
Чтобы ваше решение работало, нет необходимости каждый раз оценивать selectionModel()->selectedIndexes()
в цикле. Хитрость заключается в том, чтобы начать с конца и вернуться к началу. Если сначала удалить элемент № 7, элементы с номерами 5 и 6 сохранят свои позиции.
Чтобы дать вам немного кода:
QModelIndexList selectedIndexes(listView->selectionModel()->selectedIndexes());
for (QModelIndexList::const_iterator it = selectedIndexes.constEnd() - 1;
it >= selectedIndexes.constBegin(); --it) {
model->removeRow(it->row());
}
Надеюсь, это поможет случайному гуглеру.