Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Июнь 16, 2017, 15:41



Название: Чей метод?
Отправлено: Igors от Июнь 16, 2017, 15:41
Добрый день

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

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

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

Спасибо


Название: Re: Чей метод?
Отправлено: Авварон от Июнь 16, 2017, 16:56
Не важно. Архитектура виджетов и так плохо продумана (нет контроллеров), поэтому пишите, где ходите.


Название: Re: Чей метод?
Отправлено: Авварон от Июнь 16, 2017, 17:04
А так, я бы клал в виджет (он и так модель + вид + контроллер); а айтем - просто данные для модели.


Название: Re: Чей метод?
Отправлено: Racheengel от Июнь 16, 2017, 18:28
+1
Сигналы получает наследник QTreeWidget, пусть он и обрабатывает (на правах контроллера).
В конце концов, QTreeWidgetItem мало что знает про чилдов-парентов.


Название: Re: Чей метод?
Отправлено: Авварон от Июнь 16, 2017, 19:24
Йа кстати писал такую штуку, но делал это на моделях, соответственно логика была в модели.


Название: Re: Чей метод?
Отправлено: Racheengel от Июнь 16, 2017, 22:59
Йа кстати писал такую штуку, но делал это на моделях, соответственно логика была в модели.

Логика в модели - вроде ж моветон по последнимъ канонамъ? Или уже снова не? :)


Название: Re: Чей метод?
Отправлено: Авварон от Июнь 17, 2017, 00:39
Конкретно в этом случае, нет - это обеспечение консистентности данных модели.


Название: Re: Чей метод?
Отправлено: Igors от Июнь 17, 2017, 07:56
Логика в модели - вроде ж моветон по последнимъ канонамъ? Или уже снова не? :)
Хранить в модели или нет - по задаче, нужно ли оно там. У меня в модели никаких флажков не хранится - когда нажато Оk из исходного дерева формируется выходное (на основании поставленных checkbox'ов).

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


Название: Re: Чей метод?
Отправлено: deMax от Июль 10, 2017, 08:26
Не важно. Архитектура виджетов и так плохо продумана (нет контроллеров), поэтому пишите, где ходите.
Так вроде контрол внешний. QTreeView - вид, QAbstractItemModel - модель.
TreeWidget - это когда данный элемент простой и нет смысла MVC городить для helloword.