Название: Дополнение существующей модели Отправлено: fear от Август 01, 2008, 15:09 Существует модель, скажем model1. Задача состоит в том чтобы создать модель - model2, хранящую помимо собственных элементов, все элементы модели model1. При этом изменение/добавление/удаление элементов одной из моделей должны влиять на другую.
Над этим вопросом ломаю голову второй день, пытаюсь понять как это можно осуществить правильно, в духе qt`шного model/view подхода. Название: Re: Дополнение существующей модели Отправлено: Tonal от Август 01, 2008, 17:31 Этакая разновидность прокси. :)
Сильно зависит от того, как именно устроены эти модели. Единственное, что можно почти однозначно посоветовать - model2 должна ловить сигналы model1 об изменениях в данных. Название: Re: Дополнение существующей модели Отправлено: fear от Август 01, 2008, 22:33 Единственное, что можно почти однозначно посоветовать - model2 должна ловить сигналы model1 об изменениях в данных. не думаю что это будет хорошим решением, мне кажется, более элегантным будет решение, когда ссылка на model1 является свойством (элементом) класса model2, а методы data() и setData() класса model2 должны обеспечить работу с данными моделей как model2, так и model1. Таким образом model2 сможет непосредственно взаимодействовать с данными model1.Вообще подобная задача возникает довольно часто, наверняка решение уже имеется, вот только какое? ??? :) Название: Re: Дополнение существующей модели Отправлено: Tonal от Август 02, 2008, 07:47 Про ссылку и model2.data() и model2.setData это и так понятно. :)
Подумай, что будет происходить, когда кто-то дёрнет model1.setData? Название: Re: Дополнение существующей модели Отправлено: fear от Август 02, 2008, 15:55 Подумай, что будет происходить, когда кто-то дёрнет model1.setData? Сигналы моделей можно конечно связать, но это будет задачей не из легких, т.к. придется как-то обеспечить взаимосвязь индексов model2 и model1.Другим решением может быть определение model2 как QProxyModel, взаимодействующей с model1 и имеющей при этом свои элементы. В этом случае, если правильно подменять индексы model1 в классе model2 можно добиться решения задачи без переопределения сигналов. Дело за малым, понять как это сделать, и возможно ли это :) ??? |