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

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

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

Сообщений: 11445


Просмотр профиля
« : Июнь 18, 2017, 08:50 »

Добрый день

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

Спасибо
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #1 : Июнь 18, 2017, 14:56 »

Наверное, от задачи зависит. Могу представить себе вариант, что при выборе рута его ноды должны стать выделенными, даже если рут коллапсирован.
(просто для экономии места, например - чтобы все ноды не показывать).
Записан

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


Просмотр профиля
« Ответ #2 : Июнь 18, 2017, 15:27 »

Наверное, от задачи зависит. Могу представить себе вариант, что при выборе рута его ноды должны стать выделенными, даже если рут коллапсирован.
(просто для экономии места, например - чтобы все ноды не показывать).
Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #3 : Июнь 18, 2017, 15:34 »

Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  Улыбающийся
В таких случаях, всегда можно показать диалог с предупреждением и спросить хочет ли пользователь удалить скрытые ноды (даже дерево развернуть и показать их).
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #4 : Июнь 18, 2017, 21:52 »

Допустим collapse выбранных нодов разрешен. Юзер жмет delete - ноды удалены, но никаких видимых изменений в дереве не произошло.  Правду сказать не могу представить задачи где это хорошо/допустимо  Улыбающийся
В таких случаях, всегда можно показать диалог с предупреждением и спросить хочет ли пользователь удалить скрытые ноды (даже дерево развернуть и показать их).

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

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


Просмотр профиля
« Ответ #5 : Июнь 19, 2017, 08:47 »

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

Ладно, бум сбрасывать по коллапсу
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Июнь 19, 2017, 08:57 »

Чтобы не плодить тем - еще о великом UI.

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

Вы считаете это здравой мыслью?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #7 : Июнь 19, 2017, 13:02 »

очень нужная вещь
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #8 : Июнь 19, 2017, 16:04 »

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

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

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


Просмотр профиля
« Ответ #9 : Июнь 20, 2017, 10:44 »

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

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

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

Сообщений: 2679


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


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

Если рут выбран - должны и чилды выбраться автоматом. Поэтому юзер будет видеть, что ноды тоже выбраны.

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

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


Просмотр профиля
« Ответ #11 : Июнь 20, 2017, 17:09 »

Если рут выбран - должны и чилды выбраться автоматом.
Та ну, это нереально хотя бы потому что узлы тоже могут иметь данные отображаемые в отдельной панели, поэтому должны выбираться без чайлдов

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

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

Сообщений: 4727



Просмотр профиля WWW
« Ответ #12 : Июнь 21, 2017, 20:21 »

по-моему если выбран парент, он должен иметь приоритет перед чайлдами
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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