Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Апрель 12, 2019, 07:58



Название: Замена на массив
Отправлено: Igors от Апрель 12, 2019, 07:58
Добрый день

Немного специфики, пример. Есть модель какого-то персонажа. Юзер хочет напр сделать ему шапочку красной, курточку синей, а ботинки какой-то текстурой. Конечно для этого ему надо выбрать фейсы шапочки и др. При этом однако никаких новых моделей не создается, просто запоминаются индексы фейсов и к ним применяется свой "материал". Ну а материал - это не только цвет/текстура, в его окне только тапок с десяток.

В общем случае: жила-была большая структура данных, теперь выясняется нужно заменить ее на массив таких структур. Ну а в UI сделать переключатель какой эл-т массива редактируется. И вот тут возникает (упорная) "хотелка" - какие-то поля структуры хочется иметь общими для всех (эл-тов). Напр модель имеет 5 материалов, диффузный цвет общий. Изменили его на красный - все 5 стали красными. Но как это оформить в UI? Как-то менять вид контролов очень трудоемко. Вывалить список чекбоксов малоэффективно. Пока никаких идей нет. Что предложите?

Спасибо
 


Название: Re: Замена на массив
Отправлено: sergek от Апрель 12, 2019, 11:43
Может, применить подход, аналогичный использованию стилей в html: можно задать стиль для любого элемента, а можно задать стиль для типа элемента.
Применительно к вашей структуре - поле это элемент. Остается его идентифицировать, и в случае, когда изменяется свойство поля, для которого есть стиль, он применяется для всех аналогичных полей.


Название: Re: Замена на массив
Отправлено: Igors от Апрель 12, 2019, 15:57
..., и в случае, когда изменяется свойство поля, для которого есть стиль, он применяется для всех аналогичных полей.
Собсно "применить" - проблем нет, чисто техническая работа. Проблема как дать это понять юзеру, типа "дызайн". Т.е. как он должен видеть что вот этот параметр - общий, а вот тот - нет, и (ненавязчиво) изменить это. Дохленькое решение - contextual попапка "Set for All", все-таки лучше чем ничего. Правда это не конает для параметров-текстур (а таких немало)


Название: Re: Замена на массив
Отправлено: Day от Апрель 14, 2019, 10:02
Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в  QTreeWidget ?


Название: Re: Замена на массив
Отправлено: Igors от Апрель 14, 2019, 15:57
Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в  QTreeWidget ?
Полагаю у Вас тоже есть UI/окна, многие ли из них удастся так "запихнуть"?  :)

Предлагалось выделять  "общие" параметры цветом и/или шрифтом, по контекстной попапке менять. Это, однако, неизбежно вызывает непонятки и квешнзы "а что это?", во всяком случае при первом взгляде на UI


Название: Re: Замена на массив
Отправлено: Day от Апрель 14, 2019, 16:14
Igors, мой совет - не более чем верхоглядское соображение.
Цитировать
неизбежно вызывает непонятки и квешнзы "а что это?",
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. Опять же, не более, чем общие слова.


Название: Re: Замена на массив
Отправлено: sergek от Апрель 14, 2019, 19:10
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. ...
Кто ясно мыслит, тот ясно излагает? ))


Название: Re: Замена на массив
Отправлено: Day от Апрель 14, 2019, 19:14
Кто ясно мыслит, тот ясно излагает? ))
Увы! Работы первоткрывателялей частенько неукюжи....


Название: Re: Замена на массив
Отправлено: Igors от Апрель 15, 2019, 07:22
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя.
С понятностью самой структуры (эл-та массива) проблем нет, как для меня так и для юзверя. Ну захотел сделать объект красным - нажал color box. Захотел наложить текстуру - ну добавил файл/картинку. Что непонятного-то? Да, таких опций десятки, это нормально, материал везде развесистая штука.

Кто ясно мыслит, тот ясно излагает? ))
Часто под "ясностью" понимается "то что всем известно" и написано в букваре  :) А когда это не так - начинаются претензии типа "Вы не умеете поставить задачу!" и.т.п.


Название: Re: Замена на массив
Отправлено: Racheengel от Апрель 29, 2019, 19:03
Скорее всего, нужно ввести понятие "наследованного цвета" и отображать его, как это (нередко) делается чем-то типа шахматной доски вместо сплошной заливки, где вместо черных клеточек - наследованный цвета.

По крайней мере юзеру будет сразу видно, что цвет "какой-то другой".


Название: Re: Замена на массив
Отправлено: Igors от Апрель 30, 2019, 12:24
Скорее всего, нужно ввести понятие "наследованного цвета" и отображать его, как это (нередко) делается чем-то типа шахматной доски вместо сплошной заливки, где вместо черных клеточек - наследованный цвета.

По крайней мере юзеру будет сразу видно, что цвет "какой-то другой".
Не очень понял что за "доска", ну детали не так уж важны, что-то придумать можно. Но это немалая возня с каждым типом контрола, а их десятка полтора. И да, сразу-то он увидит, но догнать "что это" без доки проблематично. А если так, то может и не ставить сверхзадач и удовлетвориться простым "общий параметр выделяется шрифтом и/или цветом".

А вот что делать с текстурами? В UI они предъявляются как листбокс с именами файлов, при дабл-клике на айтем открывается окно текстуры (тоже немалое)