Я программист на Qt C ++ с некоторым интересом к Gtk +.Интересно, как Gtk + реализовал Model-View-Controller.В Qt они все испортили, и сами признали это.Я могу попытаться объяснить недостатки в Qt, и для тех, кто знает Gtk +, возможно, вы сможете ответить, есть ли у Gtk + те же или более серьезные проблемы:
Доступ к любому узлу, скажем, в модели дерева, основан на QModelIndex.Таким образом, каждый узел имеет своего рода уникальный идентификатор.Это создает много осложнений.Вы должны создать специальные методы для создания индекса и для создания индекса родительского объекта QModelIndex.Это может быть довольно сложным.Трудно сказать, создать два объекта модели и присоединить один из них в качестве узла в другой модели.Объекты QModelIndex, возвращаемые из одной модели, несовместимы с другой.
Я думаю, что Какао сделал гораздо более простую модель с NSOutlineView и NSOutlineViewDataSource.Подход Qt является более гибким, но за счет того, что его слишком сложно использовать и получить право.В Какао вы не используете индексный объект, а вместо этого спрашиваете, что является потомком объекта X по индексу Y. И тогда вы можете спросить о значении для данного столбца таблицы Z и объекта X.
Qt делаетне иметь конкретного простого в использовании способа аннулирования узла в дереве, чтобы сделать его перезагрузкой.С Cocoa вы можете вызвать reloadItem, чтобы создать конкретный объект в дереве, и, по желанию, его потомки будут перезагружены из Model.
Это часть моей оценки того, насколько подходит Gtk +.Я не пытаюсь объявить здесь своего рода победителя; -)