Спасибо всем за ответы!
Я просто привык к механизму плюсов, где передача по ссылке, указателю и значению имеет отличия. И если передавать объект по значению, он будет копироваться, а это память и время. Как правильно это делается в QT? Если есть некоторые данные, которые быстро меняются откуда-то извне.
В каком месте надо вставлять beginResetModel() / endResetModel() ? Как вообще работает механизм обновления моделей?
В ссылке ниже код проекта
Всё также, как и в плюсах - если у объекта тривиальный конструктор копирования и размер меньше 2х указателей (QPoint, QSize, QStringView), то передаёте по значению, иначе - по ссылке (QString, QJsonArray). Т.е. почти всегда по ссылке. Из функций в Qt принято возвращать по значению (в т.ч. для геттеров) как раз из-за implicit sharing (и из-за того что так проще менять реализацию). Но в своём коде для геттеров можно и по ссылке возвращать.
Если объект надо сохранить как член класса, придётся копировать.
В плюсах вы бы завернули свой большой объект в std::shared_ptr и передавали бы его в setter по ссылке. Тут уже это сделано за вас, поэтому лишние указатели делать не нужно.
В BRM/ERM надо завернуть изменение внутренних данных модели (setter), как сделано в
примере.