Я предполагаю, что QStringList делает копию глубины строк в своем copy-ctor.
И мы знаем, что QList не делает копий глубины. см. QList и неявное совместное использование
Итак, при вызове
void EntryWidget::setEntries(QStringList& names) {...}
Строки в имена копируются.
Но когда вы устанавливаете новый Entry -List для модели,
m_model.setEntryData(list);
список не копируется в mmodel.xy .
Теперь вы можете получить доступ к mmodel.xy , но строки, которые вы назначаете в setEntries (..) , уже удалены.Они теряют свою область видимости, когда вы покидаете метод setEntries (..) .
Примечание: QString является ссылочным указателем на строку.Это называется «неявное разделение».И все контейнеры в Qt имеют концепцию отложенной оценки.(Вероятно, за исключением QStringList , который делает глубинное копирование. Это, возможно, небольшая ошибка в Qt. Я могу сказать только 100%, если я вижу .cpp)
qt-project.org/doc/qt-5/qstringlist.html#QStringList-3