crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Несколько источников данных + одно представление
lanz
  опции профиля:
сообщение 27.3.2013, 13:51
Сообщение #11


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Не не не, вьюха не может удалять модель, а если она одна на несколько вьюх? Тут что то не связанное с привязкой (мы ведь про setModel() говорим?).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.3.2013, 13:53
Сообщение #12


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


lanz, ну да. Тогда согласен ) Просто у меня был несложный случай - одна модель и одно представление
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 28.3.2013, 14:29
Сообщение #13


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(Алексей1153 @ 27.3.2013, 14:16) *
И отсюда вытекает более правильное, на мой взгляд решение: менеджер объектов и вьюеров. У него есть список объектов, список вьюеров и список настроек

Ну, в общем это и есть контроллер, причём он получает указания от третей стороны (той, которая меняет текущий объект), а пинает модель (сделай этот объект текущим) и вьюверы (перерисуйтесь в соответствии с этими установками)

В общем, мы получили Модель-Контроллер-Представление, у которой Представление само является Модель-Представление.



Цитата(lanz @ 27.3.2013, 11:22) *
Цитата
Однажды столкнулась с тем, что вювер как-то неадекватно повёл себя при смене модели "на ходу"

Вот это поворот! А не вспомните случайно подробности?

Цитата(Алексей1153 @ 27.3.2013, 14:43) *
там дело же такое - создали на куче модель, присоединили к объекту и забыли. По идее, должна удалять, но на деле там что-то не так происходит, сначала объект удаляется, потом модель лезет по кривой памяти. У меня как-то так и происходило. Поэтому я в деструкторе модель отцеплял, тогда не падало

Что-то такое и у меня было. Да. было два экземпляра QStandardModel с разной начинкой. Предполагала, что один вьювер будет отображать, то одну то, другую модель. А он при смене модели убивал предыдущую. Естественно, при попытке обратиться к убитой модели всё падало. Это было в Qt-4.4.0 два года назад. Не уверена, что точно вспомнила ситуацию. Возможно, я пыталась менять модель у сортирующей модели... Но то, что связка образовывалась раз и на всегда и смене на ходу не подлежала, это точно.
Алексей1153, а как модель отсоединяли? Вроде бы такой функции нет, во всяком случае в 4.4.0.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 28.3.2013, 15:39
Сообщение #14


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
А он при смене модели убивал предыдущую.


Не не не :lol: , совсем недавно видел рабочий код, который на горячую модели меняет. Если никаких дополнительных отношений (только setModel), то все в порядке.
Из Qt 4.4:
Цитата
void QAbstractItemView::setModel ( QAbstractItemModel * model ) [virtual]
Sets the model for the view to present.
Note: The view does not take ownership of the model unless it is the model's parent object because it may be shared between many different views.
Note: This function will also create and set a new selection model, replacing any previously set with setSelectionModel(), but the old selection model will not be deleted.

Может это баг был в 4.4.0.

И QAbstractProxyModel не удаляет...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 28.3.2013, 15:52
Сообщение #15


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(lanz @ 28.3.2013, 16:39) *
И QAbstractProxyModel не удаляет...

Да, наверное, что-то путаю. Но то, что происходило неожиданное для меня удаление это точно. А кто удалял, не помню и кода не сохранилось.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.3.2013, 12:34
Сообщение #16


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Анна, setModel(0)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 22:31