![]() |
|
|
![]()
|
|
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
Как оповестить View о полном изменении данных в наследнике класса QAbstractItemModel. Конечно работоспособный вариант это создать новую модель и прикрутить ее ко вью. Но хочу это делать из модели, не держа указатель на сам View. В доке описано как оповестить об удалении, добавлении, перемещении данных, но не нашел как оповестить о полной замене данных. Что можете посоветовать?
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
man QAbstractItemModel::dataChanged()
Это сообщение отредактировал(а) djamshud - 27.8.2010, 15:23 -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
This signal is emitted whenever the data in an existing item changes.
Я может быть не правильно сформулировал. Но я хочу не поменять данные в конкретном айтеме или айтемах, а подменить их структуру. У меня есть древоподобные айтемы с данными внутрях прям как в примере simpletreemodel. Дак вот я хочу заменить именно рутовый айтем со всеми вытекающими последствиями изменениями структуры дерева. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
Перестраиваете в моделе дерево (это ж набор айтемов - какие-то удаляете, какие-то изменяете, какие-то добавляете). Тикаете датаЧейнжд - вью узнает, какие айтемы изменились, т.е. перерисовывает их.
Но вообще вариант с подменой модели тоже нормальный. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
Ну в общем вот так работает.
ТО что предлагал предидущий оратор (djamshud ) я так и не смог заставить работать. Может быть дело в том что при emit dataChange() не обновляются внутренние указатели(internalPointer ) у QModelIndex, а при beginRemoveRows и т.д. обновляются ну или как-то так. Это сообщение отредактировал(а) ppopov - 27.8.2010, 16:47 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |