Russian Qt Forum

Qt => Model-View (MV) => Тема начата: ecspertiza от Октябрь 03, 2011, 13:46



Название: [Закрыта] Обновление одного итема в модели
Отправлено: ecspertiza от Октябрь 03, 2011, 13:46
Суть такова, есть модель которая отображает список картинок допустим, для каждой картинки нужно создать превью. Что делаю в потоке создаю превьюшки, и возвращаю их в модель, естественно пока превьюшки создаются модель уже загружена и на месте картинок крутиться индикатор, нужно реализовать такую фичу: Когда изображение было подготовлено оно вернулось в модель, и обновила нужный элемент. Вопрос, как обновить только один элемент модели ? Делать тупо reset() плохо, ибо из потока подряд придут 10ть картинок, а 10 reset() подряд как то не кошерно.


Название: Re: Обновление одного итема в модели
Отправлено: Пантер от Октябрь 03, 2011, 13:49
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]
Эмить этот сигнал и будет тебе счастье. ;)


Название: Re: Обновление одного итема в модели
Отправлено: ecspertiza от Октябрь 03, 2011, 13:56
Спасибо, уже смотрю в его сторону. Правильно ли я понимаю что если нужно обновить допустим 3ий элемент то мы эмитим нечто вроде

Код:
emit dataChanged(index(2),index(2)) 

?


Название: Re: Обновление одного итема в модели
Отправлено: GreatSnake от Октябрь 03, 2011, 13:57
Когда изображение было подготовлено оно вернулось в модель, и обновила нужный элемент.
А разве не через QAbstractItemModel::setData() изображение "вернулось в модель"?


Название: Re: Обновление одного итема в модели
Отправлено: ecspertiza от Октябрь 03, 2011, 13:59
неа, по сути обновился только контейнер модели.


Название: Re: Обновление одного итема в модели
Отправлено: ecspertiza от Октябрь 03, 2011, 14:04
dataChanged - помог, тему можно считать закрытой  :)