Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Июнь 18, 2017, 08:50



Название: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 18, 2017, 08:50
Добрый день

Что делать с выбранными айтемами если узел дерева (которому они принадлежат) закрывается (collapsed)? Должен ли я сбросить selection?

Спасибо


Название: Re: Выбранные айтемы в дереве
Отправлено: Racheengel от Июнь 18, 2017, 14:56
Наверное, от задачи зависит. Могу представить себе вариант, что при выборе рута его ноды должны стать выделенными, даже если рут коллапсирован.
(просто для экономии места, например - чтобы все ноды не показывать).


Название: Re: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 18, 2017, 15:27
Наверное, от задачи зависит. Могу представить себе вариант, что при выборе рута его ноды должны стать выделенными, даже если рут коллапсирован.
(просто для экономии места, например - чтобы все ноды не показывать).
Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  :)


Название: Re: Выбранные айтемы в дереве
Отправлено: Old от Июнь 18, 2017, 15:34
Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  :)
В таких случаях, всегда можно показать диалог с предупреждением и спросить хочет ли пользователь удалить скрытые ноды (даже дерево развернуть и показать их).


Название: Re: Выбранные айтемы в дереве
Отправлено: Racheengel от Июнь 18, 2017, 21:52
Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  :)
В таких случаях, всегда можно показать диалог с предупреждением и спросить хочет ли пользователь удалить скрытые ноды (даже дерево развернуть и показать их).

Уверен, что я где-то такое поведение видел (прогу не вспомню, но диалог с вопросом об удалении скрытых был).


Название: Re: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 19, 2017, 08:47
Уверен, что я где-то такое поведение видел (прогу не вспомню, но диалог с вопросом об удалении скрытых был).
Такое решение "многословно" и порождает новые квешнзы - напр "а покажите-ка эти выбранные" (что-то типа reveal). Или "а не надо мне все время напоминать - я и с первого раза понял"

Ладно, бум сбрасывать по коллапсу


Название: Re: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 19, 2017, 08:57
Чтобы не плодить тем - еще о великом UI.

Юзер может делать check/uncheck для нодов в дереве. Возможно нод имеет чайлд ноды - ну тогда ясно, ставим  check/uncheck для всех чайлдов рекурсивно. Но есть мелкая проблемка - иногда нужно "чекнуть" много айтемов. Поступило предложение - давайте сначала выберем (select) айтемы, это можно сделать быстро рамкой или с клавишами. А потом жмем check и он применяется не только к данному айтему, но и ко всем выбранным

Вы считаете это здравой мыслью?


Название: Re: Выбранные айтемы в дереве
Отправлено: kambala от Июнь 19, 2017, 13:02
очень нужная вещь


Название: Re: Выбранные айтемы в дереве
Отправлено: Racheengel от Июнь 19, 2017, 16:04
Вы считаете это здравой мыслью?

Да. Это удобно и логично.


Название: Re: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 20, 2017, 10:44
очень нужная вещь
Да. Это удобно и логично.
Когда дерево вырождается в "просто список" (нет нодов с чайлдами) все хорошо. А вот если есть большое "ветвистое" дерево... Пример: выбран "корень", а юзер раскопал нод напр на 5-м уровне и жмет для него checked (про выбранный root и забыл). Что должно произойти?

Еще из той же оперы. Когда юзер "чекает" нод с чайлдами - check применяется ко всем чайлдам. Если потом check каких-то чайлдов поменялся, то парент нод показывается "half-checked". Все логично (и даже стандартно). Но кроме активности юзера есть немало операций внутри приложения - вставка, удаление, установка checked без юзера и др. И при каждой из них надо отслеживать "консистентность" checked парента. Как это сделать технично?

Кстати о птичках: глубоко не вникал но в деструкторе наследника QTreeWidgetItem почему-то (по крайней мере иногда) treeWidget() возвращает NULL,


Название: Re: Выбранные айтемы в дереве
Отправлено: Racheengel от Июнь 20, 2017, 11:20
Если рут выбран - должны и чилды выбраться автоматом. Поэтому юзер будет видеть, что ноды тоже выбраны.

При удалении надо убивать все, что выбрано. Вставка на чекбоксы по идее никак не влияет. Каждый случай имхо уникален, но в общем для каждого действия должно быть представление использования - оно должно действовать для "выбранных" или "для всех"?


Название: Re: Выбранные айтемы в дереве
Отправлено: Igors от Июнь 20, 2017, 17:09
Если рут выбран - должны и чилды выбраться автоматом.
Та ну, это нереально хотя бы потому что узлы тоже могут иметь данные отображаемые в отдельной панели, поэтому должны выбираться без чайлдов

При удалении надо убивать все, что выбрано. Вставка на чекбоксы по идее никак не влияет.
Ну как же "не влияет" - добавили нод который может быть checked или нет, стало быть checked парента запросто может измениться

Каждый случай имхо уникален, но в общем для каждого действия должно быть представление использования - оно должно действовать для "выбранных" или "для всех"?
Причем тут выбранные? Данные как-то меняются, check парентов должен "соответствовать"


Название: Re: Выбранные айтемы в дереве
Отправлено: kambala от Июнь 21, 2017, 20:21
по-моему если выбран парент, он должен иметь приоритет перед чайлдами