Название: Старое дерево Отправлено: Igors от Октябрь 26, 2018, 12:23 Добрый день
Продолжаю переделывать то самое обширное старое дерево (что в прошлый раз обозвал "таблицей"). Решил классы Qt не привлекать, слишком много всякого кастомного которого в Qt не видел. Ну ладно, решил по крайней мере выделить "модель" как отдельный класс/сущность, которая к UI не имеет отношения. Раньше был один класс Layout (синглтон) с более чем 300 методами. Разбил его на два: LayoutData (модель) и LayoutView (вьюха). Результат - по меньшей мере 3/4 ф-ционала перекочевало во вьюху, она тоже стала синглтоном и др части приложения (активно) общаются с ней. А собсно "модель" выходит как бы никому и не нужна, получается только вью ее и знает. Хорошо ли это или наоборот, типа "тревожный симптом"? Спасибо Название: Re: Старое дерево Отправлено: RedDog от Октябрь 26, 2018, 13:34 Модель о вьюхе по хорошему знать ничего не должна, потому как сегодня это кутишный виджет (к примеру), а завтра это веб-морда.
Модель должна предоставлять апи, которое будет дергать абстрактная вьюха с одной стороны, а с другой модель "наполняет" данными бизнес логика. Название: Re: Старое дерево Отправлено: qate от Октябрь 26, 2018, 14:00 мы когданибуть увидим это великое дерево ?
приличные люди примеры (мини проект) на гитхаб выкладывают ) Название: Re: Старое дерево Отправлено: sergek от Октябрь 26, 2018, 17:25 А рассказали бы, как это делается))
Название: Re: Старое дерево Отправлено: Igors от Октябрь 28, 2018, 05:51 мы когданибуть увидим это великое дерево ? Не все проекты open-source, и не всякую вещь можно в карман засунуть, это нормально. Вот дерево (аттач) очень похожее на мое и откуда я заимствую идеи. В ячейку может быть напихано что угодно в зависимости от контекста текущей строки. приличные люди примеры (мини проект) на гитхаб выкладывают ) Да, и я понимаю что дальше (нездорового) любопытства дело не уйдет :) Название: Re: Старое дерево Отправлено: Igors от Октябрь 28, 2018, 06:29 Модель о вьюхе по хорошему знать ничего не должна, потому как сегодня это кутишный виджет (к примеру), а завтра это веб-морда. Подобные общие соображения очень популярны и выглядят логично. Но так ли это на самом деле?Модель должна предоставлять апи, которое будет дергать абстрактная вьюха с одной стороны, а с другой модель "наполняет" данными бизнес логика. Модель всегда делается под вьюшку. Какая-то иллюзия общности сохраняется пока исходные данные - контейнер прямого доступа типа вектора. Иначе приходится или копировать данные или согласиться с утверждением что "модель" - вовсе не оригинал и не хранилище данных, это какой-то "навигатор" который позволит вьюхе доползти до первоисточника. А раз так, то почему мы должны упорно сводить дело к data/setData ? Напр в случае дерева настоять на этом можно создав тучу кастомных "ролей", но единственный смысл в этом - все-таки использовать Qt классы, никакой общностью здесь и не пахнет. Ну а копирование по сути ничего не решает - ведь все равно надо как-то менять оригинал. Вот такой сценарий: юзер тыкнул мышей, вьюшка разобралась где, с помощью модели нашла оригинал, и.. просто меняет его что часто выливается в солидную операцию (undo, обновление др окон и.т.п). Что здесь плохого? Есть опасность что какой-то ф-ционал (прочно) поселится во вьюшке? Да, за этим надо приглядывать и изменения выносить отдельно. Но переносить это в "модель" - оснований никаких. Что Вы об этом думаете? Название: Re: Старое дерево Отправлено: Авварон от Октябрь 28, 2018, 14:44 Название: Re: Старое дерево Отправлено: qate от Октябрь 29, 2018, 08:24 Да, и я понимаю что дальше (нездорового) любопытства дело не уйдет :) так ведь это основное ) приведенный пример дерева ужасен по юзабилити я сам не разберусь, а уж пользователи, которые начинают выть о "сложном" интерфейсе много проще этого дерева, и подавно они привыкли к простым дизайнам UI смартафоном, которые у всех и несколько кнопок и простая табличка их вводят в уныние "дай", говорят, "нам одну кнопку, чтобы все делала сразу" Название: Re: Старое дерево Отправлено: Igors от Октябрь 29, 2018, 09:06 так ведь это основное ) Adobe так не считает :) И, видимо, многие юзеры тоже, иначе это приложение не было бы одним из лидеров видеомонтажа. Вообще я давно понял - мнить себя великим дизайнером и/или постановщиком не стоит. Человек много работающий с приложением чувствует многие вещи лучше, хотя он и не программист. Вот например что упорно спрашивают уже давно (из-за чего переделки и начались). приведенный пример дерева ужасен по юзабилити - есть окно (наше дерево) в котором список всех 3D объектов сцены. Любой объект можно выключить (крайний левый чекбокс), при этом он не рисуется в др окнах. Все нормуль, во всяком случае корректно. А вот юзер недоволен - неудобно. Да, он может выкл все объекты (Select All + чекбокс) а потом вкл только нужные, но это возня. Ему нужна возможность ткнуть в объект - и только он становится видимым, остальные автоматом выкл и дизаблятся в дереве. На скриншоте выше такая возможность есть, поэтому отвертеться не удалось :) |