Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Akon от Декабрь 19, 2012, 15:06



Название: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Akon от Декабрь 19, 2012, 15:06
Уже QAbstractProxyModel находится в QtGui (QAbstractItemModel в QtCore). По идее, эти компоненты не должны зависеть от гуя. Ну там есть зависимость у QAbstractProxyModel от QItemSelection (QtGui), но и QItemSelection может быть не в гуе модуле.

Это я так, взглянув поверхностно. Просто очередной раз поймал себя на мысли, что хочу написать
#include <QtCore/QSortFilterProxyModel> - а тут надо QtGui. Кто разбирался и знает вескую причину, почему эти классы находятся в гуе модуле? И как с этим дела в Qt5?


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: kambala от Декабрь 19, 2012, 15:18
а разве можно модель использовать без гуя? например в консольном приложении.


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Bepec от Декабрь 19, 2012, 15:27
Мб будет очевидным, но технология Model-View подразумевает 2 сущности, связанные между собой неразрывно. Model, которая представляет собой данные с интерфейсом и View, который так же связан с моделью и представляет её пользователю.

PS зачем модель без View? Мб вам простой контейнер нужен?


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Akon от Декабрь 19, 2012, 16:35
Цитировать
а разве можно модель использовать без гуя? например в консольном приложении.
View - это более широкое понятие, нежели гуй. В частности, консольное представление это тоже View. View часть в кьтовском модел/вью это QAbstractItemView. Проводя параллель к консоли можно иметь QAbstractItemConsoleView, и смысл моего вопроса в том, что прокси модель может быть одной для графического и консольного представления.


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Bepec от Декабрь 19, 2012, 17:06
Если честно я вас не понимайт :) В консольном представлении модели как таковой не будет. Ибо там нет быстрой смены, резких переходов и прочего. Будет простейшее представление. Нет, даже не так - тупо отображение контейнера данных. Что вам самим мешает написать модель для консоли? Никаких хитрых требования нет, нагрузки как таковой нет.

PS поправьте, если я ошибаюсь


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Авварон от Декабрь 19, 2012, 19:16
Вы бы из саркофага вылезали бы. В Qt5 прокси и айтем селекшн модел перенесены в corelib/itemmodels. В 4ке это сделать нельзя по понятным причинам сорц и бинари совместимости.

PS: я не знал, но могу хотя бы разжиться инфой что да как. Сделали прикольно.


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Akon от Декабрь 20, 2012, 08:06
Да, до Qt5 пока руки не дошли. А как она, стабильна? Правильно ли я понял, что зависимость от гуя снята?

Верес: FAR - консольное приложение. Представьте себя архитектором - вам нужно спроектировать модел/вью и на его основе сделать консольную и гиу проги. Где у вас будет прокси-модель?



Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Авварон от Декабрь 20, 2012, 14:25
Нет, не стабильная:) Но, может, под виндой лучше, чем под маком. Крашей вроде нет, но мелких багов сотни.


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Bepec от Декабрь 20, 2012, 14:58
Испокон веков делали свои модельки :)

А Far не упоминайте пожалуйста :) Жуткая штука, DN его бил по всем направлениям _)


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Alex Custov от Декабрь 20, 2012, 15:39
PS зачем модель без View?

Модель может давать уникальный функционал, который можно использовать и без view, например (грубо говоря) QFileSystemModel.


Название: Re: Почему бы QSortFilterProxyModel не быть QtCore?
Отправлено: Bepec от Декабрь 20, 2012, 15:40
Убедили, убедили, я повержен :D