Название: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: Alex_cs_gsp от Август 23, 2010, 20:46 Читаю Шлее, вот код, который вызвал вопрос
Код: QStringListModel model; Если модель - интерфейс, то вышеприведенный код должен привести к ошибки, ведь объект QStringList() стековый, и после потери области видимости будет уничтожен. Однако вышеприведенный код работает - выходит, что модель копирует (дублирует) данные, т.е. все-таки контейнер??? Прошу ответить по-подробнее. Спасибо! Название: Re: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: BRE от Август 23, 2010, 20:48 Модель это контейнер.
Название: Re: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: Alex_cs_gsp от Август 23, 2010, 20:57 Что-то я тогда попутал. В книге прямым текстом сказано - " модель - оболочка вокруг исходных данных, что мы работаем с моделью данных и дублирование не происходит". Если это контейнер, то я не понимаю зачем нужно было так мудрить. Почему нельзя просто было все Qt контейнеры вывести (наследованием) из абстрактной модели???
Название: Re: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: BRE от Август 23, 2010, 21:07 Что-то я тогда попутал. В книге прямым текстом сказано - " модель - оболочка вокруг исходных данных, что мы работаем с моделью данных и дублирование не происходит". Если это контейнер, то я не понимаю зачем нужно было так мудрить. Почему нельзя просто было все Qt контейнеры вывести (наследованием) из абстрактной модели??? Можно хранить данные в самой модели, как это делает QStringListModel (у нее внутри есть свой объект QStringList для хранения строк) или модель может брать данные из внешних источников (как SQL-модели). Можно написать свою модель, которая будет получать данные по сети.Для view модель является источником данных, а как это будет организовано в модели, дело самой модели. Название: Re: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: lit-uriy от Август 24, 2010, 11:26 ещё модель может брать данные из другой модели, пример - QSortFilterProxyModel (http://doc.crossplatform.ru/qt/4.6.x/model-view-proxy-models.html)
Название: Re: Архитектура модель-представление. Модель - контейнер или интерфейс? Отправлено: vipet от Август 24, 2010, 16:28 Что-то я тогда попутал. В книге прямым текстом сказано - " модель - оболочка вокруг исходных данных, что мы работаем с моделью данных и дублирование не происходит". Если это контейнер, то я не понимаю зачем нужно было так мудрить. Почему нельзя просто было все Qt контейнеры вывести (наследованием) из абстрактной модели??? Модель - оболочка вокруг исходных данных. Все правильно! Это относится к QAbstractItemModel и видимо к другим классам абстрактных моделей (для того же List'а, давно их не юзал.) А класс QStringListModel значит сам хранит в себе данные. |