Russian Qt Forum
Ноябрь 26, 2024, 10:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Замена на массив  (Прочитано 12154 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Апрель 12, 2019, 07:58 »

Добрый день

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

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

Спасибо
 
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Апрель 12, 2019, 11:43 »

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

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Апрель 12, 2019, 15:57 »

..., и в случае, когда изменяется свойство поля, для которого есть стиль, он применяется для всех аналогичных полей.
Собсно "применить" - проблем нет, чисто техническая работа. Проблема как дать это понять юзеру, типа "дызайн". Т.е. как он должен видеть что вот этот параметр - общий, а вот тот - нет, и (ненавязчиво) изменить это. Дохленькое решение - contextual попапка "Set for All", все-таки лучше чем ничего. Правда это не конает для параметров-текстур (а таких немало)
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #3 : Апрель 14, 2019, 10:02 »

Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в  QTreeWidget ?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Апрель 14, 2019, 15:57 »

Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в  QTreeWidget ?
Полагаю у Вас тоже есть UI/окна, многие ли из них удастся так "запихнуть"?  Улыбающийся

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

Сообщений: 290


Просмотр профиля
« Ответ #5 : Апрель 14, 2019, 16:14 »

Igors, мой совет - не более чем верхоглядское соображение.
Цитировать
неизбежно вызывает непонятки и квешнзы "а что это?",
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. Опять же, не более, чем общие слова.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Апрель 14, 2019, 19:10 »

Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. ...
Кто ясно мыслит, тот ясно излагает? ))
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #7 : Апрель 14, 2019, 19:14 »

Кто ясно мыслит, тот ясно излагает? ))
Увы! Работы первоткрывателялей частенько неукюжи....
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Апрель 15, 2019, 07:22 »

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

Кто ясно мыслит, тот ясно излагает? ))
Часто под "ясностью" понимается "то что всем известно" и написано в букваре  Улыбающийся А когда это не так - начинаются претензии типа "Вы не умеете поставить задачу!" и.т.п.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Апрель 29, 2019, 19:03 »

Скорее всего, нужно ввести понятие "наследованного цвета" и отображать его, как это (нередко) делается чем-то типа шахматной доски вместо сплошной заливки, где вместо черных клеточек - наследованный цвета.

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Апрель 30, 2019, 12:24 »

Скорее всего, нужно ввести понятие "наследованного цвета" и отображать его, как это (нередко) делается чем-то типа шахматной доски вместо сплошной заливки, где вместо черных клеточек - наследованный цвета.

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

А вот что делать с текстурами? В UI они предъявляются как листбокс с именами файлов, при дабл-клике на айтем открывается окно текстуры (тоже немалое)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.226 секунд. Запросов: 23.