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

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

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

Сообщений: 11445


Просмотр профиля
« : Июнь 02, 2015, 10:10 »

Добрый день

Есть много объектов каждый из которых имеет много десятков параметров. Они разделены по категориям, в UI это обычно табки с обычными текстовыми полями, иногда попапками или чекбоксами. Когда юзер создает достаточно много объектов управлять ими становится затруднительно. Просто открыть "UI каждого" и там изменить уже нереально. Есть возможность изменить значение параметра сразу для всех выбранных объектов, это необходимо но не решает всех проблем. Выбор сам по себе уже непрост если объектов хотя бы сотни.

В общем надо развивать "зависимости". Упрощенно это выглядит так: есть master-объект к нему подключается любое кол-во slave объектов. Указывается какие параметры slave должен использовать от мастера, остальные рулит сам. Тогда меняя мастера юзер сразу получает множественные изменения. Ну это конечно случай простейший, наворотов здесь может быть масса - ну хотя бы "смешивать" значения, неск мастеров и.т.д  и.т.п.

Сейчас реализовано только замещение и только для одного типа объекта. Работает неплохо, но вылезает куча проблем, которые по существу сводятся к одной: неинтуитивность для пользователя, отсутствие визуального  feedback'а. Вот есть какое-то значение, юзер его меняет, но.. ничего не происходит Плачущий. Ах, оказывается оно копируется от мастера! А откуда это видно, где тот мастер, как на него соскочить? Ничего этого сейчас нет.

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

Спасибо
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Июнь 02, 2015, 10:29 »

На ум приходит древовидная модель. Рисуете дерево, узлы это ваши master-объекты, дочерние узлы - slave-объекты. Если меняется свойство мастера, можно подсвечивать все slave объекты, у которых поменялось это свойство. Само свойство можно так же подсвечивать как то. Я бы наверное сделал так. Если конечно у вас не дерево а граф, то лучше задействовать графическую сцену и рисовать на ней объекты со связями. Лично я делал подсветку изменения свойства элемента на сцене его промигиванием определенным цветом в течении определенного времени.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Июнь 02, 2015, 12:31 »

В некоторых CAD системах присутствует статус окно. Туда выводится результат действия. Можно воспользоваться таким.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июнь 02, 2015, 12:51 »

На ум приходит древовидная модель. Рисуете дерево, узлы это ваши master-объекты, дочерние узлы - slave-объекты. Если меняется свойство мастера, можно подсвечивать все slave объекты, у которых поменялось это свойство. Само свойство можно так же подсвечивать как то. Я бы наверное сделал так. Если конечно у вас не дерево а граф, то лучше задействовать графическую сцену и рисовать на ней объекты со связями. Лично я делал подсветку изменения свойства элемента на сцене его промигиванием определенным цветом в течении определенного времени.
По поводу "подсветки/подмигивания объекта" - они могут быть скрыты др объектами или вообще выключены или просто закрыты окна где они отображаются. Если добавление этой фичи все равно ничего принципиально не решает - зачем ее добавлять?

Насчет рисования деревьев - много такого видел, часто называется типа "Node Editor". Также склоняюсь к мысли что по-видимому он неизбежен. Но это отдельное (развесистое) окно, как связать его с текущими диалогами/UI?

В некоторых CAD системах присутствует статус окно. Туда выводится результат действия. Можно воспользоваться таким.
Ну как-то при беглом взгляде неясно что к чему. Конечно кто этим занимается там все ясно, но все же у меня упор на связки/зависимости, типа "что зависит от чего" и "как это изменить" - этого я на скриншоте не увидел
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Июнь 02, 2015, 13:14 »

как связать его с текущими диалогами/UI?
QDockWidget? См. скриншот выше. Там есть такое ("explorer")
« Последнее редактирование: Июнь 02, 2015, 13:17 от __Heaven__ » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 02, 2015, 15:32 »

QDockWidget? См. скриншот выше. Там есть такое ("explorer")
Не понял на что смотреть. Куда указывают красные стрелки? Ну верхняя на довольно большое окно, нижняя видимо на строку. И что? Сделать так для многих сотен параметров совершенно нереально, да и неэффективно

[off]
В некоторых CAD системах ...
Ой Улыбающийся Предел мечтаний Улыбающийся
[/off]
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Июнь 02, 2015, 16:13 »

Но это отдельное (развесистое) окно, как связать его с текущими диалогами/UI?
Проблема в том, как визуально прикрутить дерево модели (построения)?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Июнь 02, 2015, 18:01 »

Проблема в том, как визуально прикрутить дерево модели (построения)?
Ну вот, сразу чего-то крутить Улыбающийся В первую очередь мне надо решить более прозаическую задачу
..неинтуитивность для пользователя, отсутствие визуального  feedback'а. Вот есть какое-то значение, юзер его меняет, но.. ничего не происходит Плачущий. Ах, оказывается оно копируется от мастера! А откуда это видно, где тот мастер, как на него соскочить? Ничего этого сейчас нет.

А что касается "дерево модели" - то "дерево" здесь совершенно ни при чем. Напр Object1,Param1 зависит от Object2.Param1 - но ведь никаких связей парент-чайлд из этого не следует. Напр Object2,Param2 с успехом может зависеть от Object1,Param2 - не было бы циклической зависимости, все остальное можно.

Как-то Вы "узковато" подходите, я бы сказал "не  концептуально"  Улыбающийся
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #8 : Июнь 02, 2015, 18:06 »

Вы бы нарисовали хотя бы приблизительно то что хотите, на словах ничего не понятно...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Июнь 02, 2015, 19:23 »

Вы бы нарисовали хотя бы приблизительно то что хотите, на словах ничего не понятно...
Ах как удобно включать "песню непонимания" Улыбающийся Замечу что Ваши концептуальные вопросы были никак не яснее - и Вы ничего не рисовали. Ну да ладно, в какой-то визуализации всегда есть смысл (ну как бы включаются др органы чувств), попробуем

См аттач. Пусть Param1 - сам по себе, что юзер ввел - то и получил.  Param2 зависимый, а вот как - хз. Возможно полностью - что ни вводи пофиг. Но возможно и частично. А Param3 наоборот, кому-то "диктует" - но опять-таки насколько - хз. Как это визуализировать - причем лаконично, обязательно в общем виде, таких параметров сотни, что-то делать "для каждого" обречено
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #10 : Июнь 03, 2015, 09:45 »

вот вы на меня грешите, а сами не намного яснее изъясняетесь  Строит глазки.
Хотя вас понимаю, порой словами тяжело объяснить ту картину, которая в голове уже крутится но не до конца сформирована.
Опять так таки, что вы подразумеваете "показать пользователю зависимости".

Вот мы поменяли в первом поле ввода данные. Они я так понимаю влияют на второе поле? Ну в процессе ввода, второе поле можно как то подсвечивать определенным цветом например. Или рядом или в toolTip выводить название изменённого свойства. Или расположить рядом кнопку, при нажатии на которую выводится окно со списком объектов, которые изменились.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Июнь 03, 2015, 11:00 »

Что за привычка спрашивать, а потом тролить тех, кто благосклонен помочь? Если вы умнее других, зачем спрашивать? Не первый раз замечаю...

По делу:
Если рассматривать подобное окно настроек, то я бы выбрал что-то со списком + стэковым виджетом. Если параметр независим, то просто даётся возможность им оперировать. Если от него есть зависимость у других объектов - выводим в стэковый виджет дерево зависимостей или список объектов, что удобнее. Если параметр зависим, то выводится ссылка на объект-родитель, может быть даже с возможностью перейти к этому объекту...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Июнь 03, 2015, 12:26 »

Опять так таки, что вы подразумеваете "показать пользователю зависимости".

Вот мы поменяли в первом поле ввода данные. Они я так понимаю влияют на второе поле?
С чего Вы взяли Непонимающий
См аттач. Пусть Param1 - сам по себе, что юзер ввел - то и получил. Param2 зависимый, а вот как - хз. Возможно полностью - что ни вводи пофиг. Но возможно и частично. А Param3 наоборот, кому-то "диктует" - но опять-таки насколько - хз.
Param1 "сам по себе", т.е. не участвует ни в каких зависимостях, А вот Param2 и Param3 участвуют. Также никто не обещал что зависимый/зависящий вообще находятся в зоне видимости открытого UI - это как правило совсем другой объект, может даже др типа.

Ну в процессе ввода, второе поле можно как то подсвечивать определенным цветом например. Или рядом или в toolTip выводить название изменённого свойства. Или расположить рядом кнопку, при нажатии на которую выводится окно со списком объектов, которые изменились.
Опять-таки давайте вернемся к моему "неясному объяснению"
Как это визуализировать - причем лаконично, обязательно в общем виде, таких параметров сотни, что-то делать "для каждого" обречено
Ну как-то снабжать каждый QLineEdit кнопкой..  Улыбающийся

По делу:
Если рассматривать подобное окно настроек, то я бы выбрал что-то со списком + стэковым виджетом. Если параметр независим, то просто даётся возможность им оперировать. Если от него есть зависимость у других объектов - выводим в стэковый виджет дерево зависимостей или список объектов, что удобнее. Если параметр зависим, то выводится ссылка на объект-родитель, может быть даже с возможностью перейти к этому объекту...
Это нельзя считать лаконичным, рабочих окон десятки, пристегивать к каждому что-то типа стекового виджета только для достижения частной/локальной цели - явно "не то"

Что за привычка спрашивать, а потом тролить тех, кто благосклонен помочь? Если вы умнее других, зачем спрашивать? Не первый раз замечаю...
Не надо считать что каждый создавший тему "просит помочь". В роли "хелпа" форумы малоэффективны. Мне бы хотелось обсудить проблему с коллегами, услышать мнения живых людей. Понимаю что необязательно это должно быть "готовое решение", но может мне удастся что-то почерпнуть, уяснить для себя - и то неплохо. Ну от Вас я пока ничего путного не услышал, поэтому считать себя "благосклонно помогающим" точно не стоит Улыбающийся

Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #13 : Июнь 03, 2015, 22:29 »

не вижу смысла больше отвечать на ваши вопросы. нарцисцизм и синдром дартаньяна поистинне зашкаливает. ничего личного, но мне не приятно читать ваше снисхождение до остальных, которые кстати пытаются вам помочь, и на все попытки вы вертите носом и фыркаете. варитесь сами в своем соку.
Записан
Bepec
Гость
« Ответ #14 : Июнь 04, 2015, 02:03 »

offtop: Просто показалось забавным, на мой взгляд подходит.

Тип энергетического вампира: Беспомощная личность.
Человек, который ведёт игру «Почему бы вам не?…» — «Да, но…». В чем она заключается? Беспомощная личность рассказывает о своей проблеме и советчики (доноры) изо всех сил стараются её решить. Но сколько бы ни было советчиков, и какими бы умными они ни были - на каждое их предложение у него есть возражение. Когда круг замыкается, и вариантов решения больше нет, начинается новое развлечение «Разве это не ужасно?» В результате, проблема так и не решилась, доноры испытывают сильное эмоциональное и физическое истощение, а вампир доволен, он получил то, что ему было надо и идет искать, кому бы ещё пожаловаться.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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