Russian Qt Forum
Ноябрь 24, 2024, 09:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Дополнение существующей модели  (Прочитано 3762 раз)
fear
Гость
« : Август 01, 2008, 15:09 »

Существует модель, скажем model1. Задача состоит в том чтобы создать модель - model2, хранящую помимо собственных элементов, все элементы модели model1. При этом изменение/добавление/удаление элементов одной из моделей должны влиять на другую.

Над этим вопросом ломаю голову второй день, пытаюсь понять как это можно осуществить правильно, в духе qt`шного model/view подхода.
Записан
Tonal
Гость
« Ответ #1 : Август 01, 2008, 17:31 »

Этакая разновидность прокси. Улыбающийся
Сильно зависит от того, как именно устроены эти модели.
Единственное, что можно почти однозначно посоветовать - model2 должна ловить сигналы model1 об изменениях в данных.
Записан
fear
Гость
« Ответ #2 : Август 01, 2008, 22:33 »

Единственное, что можно почти однозначно посоветовать - model2 должна ловить сигналы model1 об изменениях в данных.
не думаю что это будет хорошим решением, мне кажется, более элегантным будет решение, когда ссылка на model1 является свойством (элементом) класса model2, а методы data() и setData() класса model2 должны обеспечить работу с данными моделей как model2, так и model1. Таким образом model2 сможет непосредственно взаимодействовать с данными model1.

Вообще подобная задача возникает довольно часто, наверняка решение уже имеется, вот только какое?  Непонимающий Улыбающийся
Записан
Tonal
Гость
« Ответ #3 : Август 02, 2008, 07:47 »

Про ссылку и model2.data() и model2.setData это и так понятно. Улыбающийся
Подумай, что будет происходить, когда кто-то дёрнет model1.setData?
Записан
fear
Гость
« Ответ #4 : Август 02, 2008, 15:55 »

Подумай, что будет происходить, когда кто-то дёрнет model1.setData?
Сигналы моделей можно конечно связать, но это будет задачей не из легких, т.к. придется как-то обеспечить взаимосвязь индексов model2 и model1.
Другим решением может быть определение model2 как QProxyModel, взаимодействующей с model1 и имеющей при этом свои элементы. В этом случае, если правильно подменять индексы model1 в классе model2 можно добиться решения задачи без переопределения сигналов. Дело за малым, понять как это сделать, и возможно ли это   Улыбающийся Непонимающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 21.