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

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

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

Сообщений: 11445


Просмотр профиля
« : Июнь 16, 2017, 15:41 »

Добрый день

Есть наследник QTreeWidget у которого и QTreeWidgetItem перекрыт. По нажатию на checkbox в колонке нужно

- если у айтема есть чайлды - установить то же значение checkbox'а им всем
- если у айтема есть парент - установить ему (и всем его парентам) значения выбран/нет/полу-выбран

Такие диалоги Вы часто видели в инсталлах (выбор какие фичи ставить). Проблем с реализацией нет. Но чьим методом должен быть этот код?

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

Сообщений: 3260


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

Не важно. Архитектура виджетов и так плохо продумана (нет контроллеров), поэтому пишите, где ходите.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


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

А так, я бы клал в виджет (он и так модель + вид + контроллер); а айтем - просто данные для модели.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


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

+1
Сигналы получает наследник QTreeWidget, пусть он и обрабатывает (на правах контроллера).
В конце концов, QTreeWidgetItem мало что знает про чилдов-парентов.
Записан

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 не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


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

Йа кстати писал такую штуку, но делал это на моделях, соответственно логика была в модели.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


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

Йа кстати писал такую штуку, но делал это на моделях, соответственно логика была в модели.

Логика в модели - вроде ж моветон по последнимъ канонамъ? Или уже снова не? Улыбающийся
Записан

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 не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


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

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

Сообщений: 11445


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

Логика в модели - вроде ж моветон по последнимъ канонамъ? Или уже снова не? Улыбающийся
Хранить в модели или нет - по задаче, нужно ли оно там. У меня в модели никаких флажков не хранится - когда нажато Оk из исходного дерева формируется выходное (на основании поставленных checkbox'ов).

Думается просто ф-ция (не член никакого класса), возможно template если понадобится там и сям (пока нет)
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



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

Не важно. Архитектура виджетов и так плохо продумана (нет контроллеров), поэтому пишите, где ходите.
Так вроде контрол внешний. QTreeView - вид, QAbstractItemModel - модель.
TreeWidget - это когда данный элемент простой и нет смысла MVC городить для helloword.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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