Вид не обновляется после смены модели

Я пытаюсь реализовать архитектуру модель / представление в моей программе, но представление не обновляется после изменения модели, хотя я думаю, что это должно быть автоматически.

Вот упрощенная версия моего кода:

QStringListModel *model = new QStringListModel;
QListView *view = new QListView;

view->setModel(model);

QStringList list;
list << "a" << "b" << "c";

model->setStringList(list);
model->stringList() << "d";

Проблема, на мой взгляд, содержит только a, b и c. Но не буду. Зачем? Я думал, что вид будет автоматически обновляться после смены модели, но, похоже, это не так. У тебя есть идея?

2

Решение

Проблема в последней строке. model->stringList() возвращает копия из QStringList используется как модель, поэтому вы изменяете только копию, а та, что использовалась для модели, остается неизменной.

Используйте что-то вроде этого:

QStringList list = model->stringList();
list << "d";
model->setStringList(list);

Это будет работать, хотя setStringList() вызовет полный, потенциально дорогой сброс модели. Тем не менее, кажется, что нет никакого способа обойти это с QStringListModel,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]