Russian Qt Forum
Ноябрь 22, 2024, 23:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Замена на массив
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Замена на массив (Прочитано 12134 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Замена на массив
«
:
Апрель 12, 2019, 07:58 »
Добрый день
Немного специфики, пример. Есть модель какого-то персонажа. Юзер хочет напр сделать ему шапочку красной, курточку синей, а ботинки какой-то текстурой. Конечно для этого ему надо выбрать фейсы шапочки и др. При этом однако никаких новых моделей не создается, просто запоминаются индексы фейсов и к ним применяется свой "материал". Ну а материал - это не только цвет/текстура, в его окне только тапок с десяток.
В общем случае: жила-была большая структура данных, теперь выясняется нужно заменить ее на массив таких структур. Ну а в UI сделать переключатель какой эл-т массива редактируется. И вот тут возникает (упорная) "хотелка" - какие-то поля структуры хочется иметь общими для всех (эл-тов). Напр модель имеет 5 материалов, диффузный цвет общий. Изменили его на красный - все 5 стали красными. Но как это оформить в UI? Как-то менять вид контролов очень трудоемко. Вывалить список чекбоксов малоэффективно. Пока никаких идей нет. Что предложите?
Спасибо
Записан
sergek
Гипер активный житель
Online
Сообщений: 872
Мы должны приносить пользу людям.
Re: Замена на массив
«
Ответ #1 :
Апрель 12, 2019, 11:43 »
Может, применить подход, аналогичный использованию стилей в html: можно задать стиль для любого элемента, а можно задать стиль для типа элемента.
Применительно к вашей структуре - поле это элемент. Остается его идентифицировать, и в случае, когда изменяется свойство поля, для которого есть стиль, он применяется для всех аналогичных полей.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Замена на массив
«
Ответ #2 :
Апрель 12, 2019, 15:57 »
Цитата: sergek от Апрель 12, 2019, 11:43
..., и в случае, когда изменяется свойство поля, для которого есть стиль, он применяется для всех аналогичных полей.
Собсно "применить" - проблем нет, чисто техническая работа. Проблема как дать это понять юзеру, типа "дызайн". Т.е. как он должен видеть что вот этот параметр - общий, а вот тот - нет, и (ненавязчиво) изменить это. Дохленькое решение - contextual попапка "Set for All", все-таки лучше чем ничего. Правда это не конает для параметров-текстур (а таких немало)
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Замена на массив
«
Ответ #3 :
Апрель 14, 2019, 10:02 »
Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в QTreeWidget ?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Замена на массив
«
Ответ #4 :
Апрель 14, 2019, 15:57 »
Цитата: Day от Апрель 14, 2019, 10:02
Задача видится как "деревянная". Может быть подумать о том, как все управление запихнуть в QTreeWidget ?
Полагаю у Вас тоже есть UI/окна, многие ли из них удастся так "запихнуть"?
Предлагалось выделять "общие" параметры цветом и/или шрифтом, по контекстной попапке менять. Это, однако, неизбежно вызывает непонятки и квешнзы "а что это?", во всяком случае при первом взгляде на UI
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Замена на массив
«
Ответ #5 :
Апрель 14, 2019, 16:14 »
Igors
, мой совет - не более чем верхоглядское соображение.
Цитировать
неизбежно вызывает непонятки и квешнзы "а что это?",
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. Опять же, не более, чем общие слова.
Записан
sergek
Гипер активный житель
Online
Сообщений: 872
Мы должны приносить пользу людям.
Re: Замена на массив
«
Ответ #6 :
Апрель 14, 2019, 19:10 »
Цитата: Day от Апрель 14, 2019, 16:14
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя. ...
Кто ясно мыслит, тот ясно излагает? ))
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Day
Частый гость
Offline
Сообщений: 290
Re: Замена на массив
«
Ответ #7 :
Апрель 14, 2019, 19:14 »
Цитата: sergek от Апрель 14, 2019, 19:10
Кто ясно мыслит, тот ясно излагает? ))
Увы! Работы первоткрывателялей частенько неукюжи....
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Замена на массив
«
Ответ #8 :
Апрель 15, 2019, 07:22 »
Цитата: Day от Апрель 14, 2019, 16:14
Имхо, для начала надо бы, чтобы структура была абсолютно понятна вам самому. А уже потом пытаться донести ее смысл до юзверя.
С понятностью самой структуры (эл-та массива) проблем нет, как для меня так и для юзверя. Ну захотел сделать объект красным - нажал color box. Захотел наложить текстуру - ну добавил файл/картинку. Что непонятного-то? Да, таких опций десятки, это нормально, материал везде развесистая штука.
Цитата: sergek от Апрель 14, 2019, 19:10
Кто ясно мыслит, тот ясно излагает? ))
Часто под "ясностью" понимается "то что всем известно" и написано в букваре
А когда это не так - начинаются претензии типа "Вы не умеете поставить задачу!" и.т.п.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Замена на массив
«
Ответ #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
Сообщений: 11445
Re: Замена на массив
«
Ответ #10 :
Апрель 30, 2019, 12:24 »
Цитата: Racheengel от Апрель 29, 2019, 19:03
Скорее всего, нужно ввести понятие "наследованного цвета" и отображать его, как это (нередко) делается чем-то типа шахматной доски вместо сплошной заливки, где вместо черных клеточек - наследованный цвета.
По крайней мере юзеру будет сразу видно, что цвет "какой-то другой".
Не очень понял что за "доска", ну детали не так уж важны, что-то придумать можно. Но это немалая возня с каждым типом контрола, а их десятка полтора. И да, сразу-то он увидит, но догнать "что это" без доки проблематично. А если так, то может и не ставить сверхзадач и удовлетвориться простым "общий параметр выделяется шрифтом и/или цветом".
А вот что делать с текстурами? В UI они предъявляются как листбокс с именами файлов, при дабл-клике на айтем открывается окно текстуры (тоже немалое)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...