Russian Qt Forum
Ноябрь 22, 2024, 22:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Зависимости в UI
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Зависимости в UI (Прочитано 8811 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Зависимости в UI
«
:
Июнь 02, 2015, 10:10 »
Добрый день
Есть много объектов каждый из которых имеет много десятков параметров. Они разделены по категориям, в UI это обычно табки с обычными текстовыми полями, иногда попапками или чекбоксами. Когда юзер создает достаточно много объектов управлять ими становится затруднительно. Просто открыть "UI каждого" и там изменить уже нереально. Есть возможность изменить значение параметра сразу для всех выбранных объектов, это необходимо но не решает всех проблем. Выбор сам по себе уже непрост если объектов хотя бы сотни.
В общем надо развивать "зависимости". Упрощенно это выглядит так: есть master-объект к нему подключается любое кол-во slave объектов. Указывается какие параметры slave должен использовать от мастера, остальные рулит сам. Тогда меняя мастера юзер сразу получает множественные изменения. Ну это конечно случай простейший, наворотов здесь может быть масса - ну хотя бы "смешивать" значения, неск мастеров и.т.д и.т.п.
Сейчас реализовано только замещение и только для одного типа объекта. Работает неплохо, но вылезает куча проблем, которые по существу сводятся к одной: неинтуитивность для пользователя, отсутствие визуального feedback'а. Вот есть какое-то значение, юзер его меняет, но.. ничего не происходит
. Ах, оказывается оно копируется от мастера! А откуда это видно, где тот мастер, как на него соскочить? Ничего этого сейчас нет.
Нагородить какой-то велосипед можно. Ну напр "давайте рисовать все зависимые параметры др цветом (синим, что ли?) а в ихнее контекстное меню чего-то добавим". Это, на мой взгляд, разумно, но достаточно ли это солидно, капитально? Нет ли каких-то общепринятых подходов, ведь задача/проблема достаточно стандартна. Прошу блеснуть эрудицией, а если есть личный опыт - вообще прекрасно
Спасибо
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Зависимости в UI
«
Ответ #1 :
Июнь 02, 2015, 10:29 »
На ум приходит древовидная модель. Рисуете дерево, узлы это ваши master-объекты, дочерние узлы - slave-объекты. Если меняется свойство мастера, можно подсвечивать все slave объекты, у которых поменялось это свойство. Само свойство можно так же подсвечивать как то. Я бы наверное сделал так. Если конечно у вас не дерево а граф, то лучше задействовать графическую сцену и рисовать на ней объекты со связями. Лично я делал подсветку изменения свойства элемента на сцене его промигиванием определенным цветом в течении определенного времени.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Зависимости в UI
«
Ответ #2 :
Июнь 02, 2015, 12:31 »
В некоторых CAD системах присутствует статус окно. Туда выводится результат действия. Можно воспользоваться таким.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Зависимости в UI
«
Ответ #3 :
Июнь 02, 2015, 12:51 »
Цитата: Fregloin от Июнь 02, 2015, 10:29
На ум приходит древовидная модель. Рисуете дерево, узлы это ваши master-объекты, дочерние узлы - slave-объекты. Если меняется свойство мастера, можно подсвечивать все slave объекты, у которых поменялось это свойство. Само свойство можно так же подсвечивать как то. Я бы наверное сделал так. Если конечно у вас не дерево а граф, то лучше задействовать графическую сцену и рисовать на ней объекты со связями. Лично я делал подсветку изменения свойства элемента на сцене его промигиванием определенным цветом в течении определенного времени.
По поводу "подсветки/подмигивания объекта" - они могут быть скрыты др объектами или вообще выключены или просто закрыты окна где они отображаются. Если добавление этой фичи все равно ничего принципиально не решает - зачем ее добавлять?
Насчет рисования деревьев - много такого видел, часто называется типа "Node Editor". Также склоняюсь к мысли что по-видимому он неизбежен. Но это отдельное (развесистое) окно, как связать его с текущими диалогами/UI?
Цитата: __Heaven__ от Июнь 02, 2015, 12:31
В некоторых CAD системах присутствует статус окно. Туда выводится результат действия. Можно воспользоваться таким.
Ну как-то при беглом взгляде неясно что к чему. Конечно кто этим занимается там все ясно, но все же у меня упор на связки/зависимости, типа "что зависит от чего" и "как это изменить" - этого я на скриншоте не увидел
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Зависимости в UI
«
Ответ #4 :
Июнь 02, 2015, 13:14 »
Цитата: Igors от Июнь 02, 2015, 12:51
как связать его с текущими диалогами/UI?
QDockWidget? См. скриншот выше. Там есть такое ("explorer")
«
Последнее редактирование: Июнь 02, 2015, 13:17 от __Heaven__
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Зависимости в UI
«
Ответ #5 :
Июнь 02, 2015, 15:32 »
Цитата: __Heaven__ от Июнь 02, 2015, 13:14
QDockWidget? См. скриншот выше. Там есть такое ("explorer")
Не понял на что смотреть. Куда указывают красные стрелки? Ну верхняя на довольно большое окно, нижняя видимо на строку. И что? Сделать так для многих сотен параметров совершенно нереально, да и неэффективно
[off]
Цитата: __Heaven__ от Июнь 02, 2015, 12:31
В некоторых CAD системах ...
Ой
Предел мечтаний
[/off]
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Зависимости в UI
«
Ответ #6 :
Июнь 02, 2015, 16:13 »
Цитата: Igors от Июнь 02, 2015, 12:51
Но это отдельное (развесистое) окно, как связать его с текущими диалогами/UI?
Проблема в том, как визуально прикрутить дерево модели (построения)?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Зависимости в UI
«
Ответ #7 :
Июнь 02, 2015, 18:01 »
Цитата: __Heaven__ от Июнь 02, 2015, 16:13
Проблема в том, как визуально прикрутить дерево модели (построения)?
Ну вот, сразу чего-то крутить
В первую очередь мне надо решить более прозаическую задачу
Цитата: Igors от Июнь 02, 2015, 10:10
..неинтуитивность для пользователя, отсутствие визуального feedback'а. Вот есть какое-то значение, юзер его меняет, но.. ничего не происходит
. Ах, оказывается оно копируется от мастера! А откуда это видно, где тот мастер, как на него соскочить? Ничего этого сейчас нет.
А что касается "дерево модели" - то "дерево" здесь совершенно ни при чем. Напр Object1,Param1 зависит от Object2.Param1 - но ведь никаких связей парент-чайлд из этого не следует. Напр Object2,Param2 с успехом может зависеть от Object1,Param2 - не было бы циклической зависимости, все остальное можно.
Как-то Вы "узковато" подходите, я бы сказал "не концептуально"
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Зависимости в UI
«
Ответ #8 :
Июнь 02, 2015, 18:06 »
Вы бы нарисовали хотя бы приблизительно то что хотите, на словах ничего не понятно...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Зависимости в UI
«
Ответ #9 :
Июнь 02, 2015, 19:23 »
Цитата: Fregloin от Июнь 02, 2015, 18:06
Вы бы нарисовали хотя бы приблизительно то что хотите, на словах ничего не понятно...
Ах как удобно включать "песню непонимания"
Замечу что Ваши концептуальные вопросы были никак не яснее - и Вы ничего не рисовали. Ну да ладно, в какой-то визуализации всегда есть смысл (ну как бы включаются др органы чувств), попробуем
См аттач. Пусть Param1 - сам по себе, что юзер ввел - то и получил. Param2 зависимый, а вот как - хз. Возможно полностью - что ни вводи пофиг. Но возможно и частично. А Param3 наоборот, кому-то "диктует" - но опять-таки насколько - хз. Как это визуализировать - причем лаконично, обязательно в общем виде, таких параметров сотни, что-то делать "для каждого" обречено
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Зависимости в UI
«
Ответ #10 :
Июнь 03, 2015, 09:45 »
вот вы на меня грешите, а сами не намного яснее изъясняетесь
.
Хотя вас понимаю, порой словами тяжело объяснить ту картину, которая в голове уже крутится но не до конца сформирована.
Опять так таки, что вы подразумеваете "показать пользователю зависимости".
Вот мы поменяли в первом поле ввода данные. Они я так понимаю влияют на второе поле? Ну в процессе ввода, второе поле можно как то подсвечивать определенным цветом например. Или рядом или в toolTip выводить название изменённого свойства. Или расположить рядом кнопку, при нажатии на которую выводится окно со списком объектов, которые изменились.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Зависимости в UI
«
Ответ #11 :
Июнь 03, 2015, 11:00 »
Что за привычка спрашивать, а потом тролить тех, кто благосклонен помочь? Если вы умнее других, зачем спрашивать? Не первый раз замечаю...
По делу:
Если рассматривать подобное окно настроек, то я бы выбрал что-то со списком + стэковым виджетом. Если параметр независим, то просто даётся возможность им оперировать. Если от него есть зависимость у других объектов - выводим в стэковый виджет дерево зависимостей или список объектов, что удобнее. Если параметр зависим, то выводится ссылка на объект-родитель, может быть даже с возможностью перейти к этому объекту...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Зависимости в UI
«
Ответ #12 :
Июнь 03, 2015, 12:26 »
Цитата: Fregloin от Июнь 03, 2015, 09:45
Опять так таки, что вы подразумеваете "показать пользователю зависимости".
Вот мы поменяли в первом поле ввода данные. Они я так понимаю влияют на второе поле?
С чего Вы взяли
Цитата: Igors от Июнь 02, 2015, 19:23
См аттач. Пусть Param1 - сам по себе, что юзер ввел - то и получил. Param2 зависимый, а вот как - хз. Возможно полностью - что ни вводи пофиг. Но возможно и частично. А Param3 наоборот, кому-то "диктует" - но опять-таки насколько - хз.
Param1 "сам по себе", т.е. не участвует ни в каких зависимостях, А вот Param2 и Param3 участвуют. Также никто не обещал что зависимый/зависящий вообще находятся в зоне видимости открытого UI - это как правило совсем другой объект, может даже др типа.
Цитата: Fregloin от Июнь 03, 2015, 09:45
Ну в процессе ввода, второе поле можно как то подсвечивать определенным цветом например. Или рядом или в toolTip выводить название изменённого свойства. Или расположить рядом кнопку, при нажатии на которую выводится окно со списком объектов, которые изменились.
Опять-таки давайте вернемся к моему "неясному объяснению"
Цитата: Igors от Июнь 02, 2015, 19:23
Как это визуализировать - причем лаконично, обязательно в общем виде, таких параметров сотни, что-то делать "для каждого" обречено
Ну как-то снабжать каждый QLineEdit кнопкой..
Цитата: __Heaven__ от Июнь 03, 2015, 11:00
По делу:
Если рассматривать подобное окно настроек, то я бы выбрал что-то со списком + стэковым виджетом. Если параметр независим, то просто даётся возможность им оперировать. Если от него есть зависимость у других объектов - выводим в стэковый виджет дерево зависимостей или список объектов, что удобнее. Если параметр зависим, то выводится ссылка на объект-родитель, может быть даже с возможностью перейти к этому объекту...
Это нельзя считать лаконичным, рабочих окон десятки, пристегивать к каждому что-то типа стекового виджета только для достижения частной/локальной цели - явно "не то"
Цитата: __Heaven__ от Июнь 03, 2015, 11:00
Что за привычка спрашивать, а потом тролить тех, кто благосклонен помочь? Если вы умнее других, зачем спрашивать? Не первый раз замечаю...
Не надо считать что каждый создавший тему "просит помочь". В роли "хелпа" форумы малоэффективны. Мне бы хотелось обсудить проблему с коллегами, услышать мнения живых людей. Понимаю что необязательно это должно быть "готовое решение", но может мне удастся что-то почерпнуть, уяснить для себя - и то неплохо. Ну от Вас я пока ничего путного не услышал, поэтому считать себя "благосклонно помогающим" точно не стоит
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Зависимости в UI
«
Ответ #13 :
Июнь 03, 2015, 22:29 »
не вижу смысла больше отвечать на ваши вопросы. нарцисцизм и синдром дартаньяна поистинне зашкаливает. ничего личного, но мне не приятно читать ваше снисхождение до остальных, которые кстати пытаются вам помочь, и на все попытки вы вертите носом и фыркаете. варитесь сами в своем соку.
Записан
Bepec
Гость
Re: Зависимости в UI
«
Ответ #14 :
Июнь 04, 2015, 02:03 »
offtop: Просто показалось забавным, на мой взгляд подходит.
Тип энергетического вампира: Беспомощная личность.
Человек, который ведёт игру «Почему бы вам не?…» — «Да, но…». В чем она заключается? Беспомощная личность рассказывает о своей проблеме и советчики (доноры) изо всех сил стараются её решить. Но сколько бы ни было советчиков, и какими бы умными они ни были - на каждое их предложение у него есть возражение. Когда круг замыкается, и вариантов решения больше нет, начинается новое развлечение «Разве это не ужасно?» В результате, проблема так и не решилась, доноры испытывают сильное эмоциональное и физическое истощение, а вампир доволен, он получил то, что ему было надо и идет искать, кому бы ещё пожаловаться.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...