Russian Qt Forum

Qt => Model-View (MV) => Тема начата: mugabe от Июнь 26, 2009, 12:52



Название: Как добавить элемент в QStringListModel?
Отправлено: mugabe от Июнь 26, 2009, 12:52
Есть код:
Код
C++ (Qt)
 QListView *view;
 QStringList list;
 QStringListModel *model;
---8<---------------------------------
 
list << "line 1";
 
model = new QStringListModel();
model->setStringList(list);
view->setModel(model);
 
...
 
view->model()->stringList() << "line 2";
 
В итоге вьюха отображает только "line 1", оно и понятно - модель не узнала об изменениях в stringList.

Есть какой-то способ заставить модель обновиться?
beginInsertRows(...) тут по-моему не очень подходит. Хотя, наверное, сработает.


Название: Re: Как добавить элемент в QStringListModel?
Отправлено: spectre71 от Июнь 26, 2009, 13:01
Хотя, наверное, сработает.
А попробовать сначала! И почитать доку. Посмотреть примеры!


Название: Re: Как добавить элемент в QStringListModel?
Отправлено: Rcus от Июнь 26, 2009, 13:04
У класса QAbstractItemView метод model() возвращает указатель на объект класса QAbstractItemModel, у которого нет метода stringList(), поэтому возникает вопрос. даже три: ???

Если же серьезно то метод stringList() у QStringListModel объявлен как QStringList QStringListModel::stringList () const. Ясно что операции с результатом никак не повлияют на модель.
Для изменения/вставки данных надо пользоваться интерфейсом insertRows/setData