Описание классов Qt

QPersistentModelIndex: сохраняем ссылку на элемент модели при её изменениях

Когда обычный QModelIndex недостаточен

QModelIndex обычно используют кратковременно: получить данные, обработать действие пользователя и завершить работу. После вставки, удаления или перестановки строк старый индекс может больше не указывать на прежний элемент. Если ссылку нужно хранить между такими изменениями, рассмотрите QPersistentModelIndex.

QPersistentModelIndex current = view->currentIndex();
if (current.isValid()) {
    const QVariant value = current.data(Qt::DisplayRole);
    qDebug() << value;
}

Постоянный индекс отслеживает изменения структуры, о которых модель сообщает корректными сигналами. Если соответствующая строка удалена или модель сброшена, индекс станет недействительным — проверяйте isValid() перед использованием.

Не заменяйте им идентификатор данных

QPersistentModelIndex связан с конкретной моделью и её жизненным циклом. Для сохранения выбора при перезагрузке данных или передачи между слоями приложения храните собственный стабильный ID записи, а после обновления находите по нему новый индекс. Не держите постоянные индексы дольше, чем нужно: они требуют от модели дополнительной работы при изменении структуры.