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

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

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

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Май 31, 2016, 14:43 »

То есть КАЖДЫЙ GridMan, от которого наследуюется КАЖДАЯ нода, имеет доступ ко всем остальным нодам?
Ко всем позициям чайлд-нодов данного нода. А про "собственно ноды" GridMan ничего не знает (что хорошо)

Вынесите GridMan в отдельный класс, пусть он будет "один для всех".
Синглтон что ли? Здесь явно не подходит

Да, туговато идет, у меня впечатление что Вы постоянно забываете условие Улыбающийся Ладно, переформулируем чуть иначе

- Есть ф-ционал пересчета всех значений строк/столбцов при вставке/удалении в таблице. Ни с какой конкретной таблицей он не связан, поэтому и хочется сделать его отдельным классом (напр GridMan). Однако сами значения строк/столбцов удобнее хранить в самой таблице (или в др классе) где они непосредственно используются и сериализуются. Все что нужно GridMan - знать число ячеек и читать/писать значения строк/столбцов (не заботясь о том кому они принадлежат). Как должен выглядеть GridMan чтобы им удобно было пользоваться?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #16 : Май 31, 2016, 15:25 »

Вот сейчас Вы описываете совершенно другую задачу, чем в начале...

Получается, что GridMan - это менеджер данных таблицы, который должен отслеживать вставку-удаление строк-столбцов таблицы и обновлять ее контент. То есть по сути это - некий контроллер, имеющий что-то типа OnRowInserted(MyTable* table, int row), OnColumnRemoved(MyTable* table, int column) и т.д.

А куда ноды теперь подевались?
Записан

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


Просмотр профиля
« Ответ #17 : Июнь 01, 2016, 17:57 »

Получается, что GridMan - это менеджер данных таблицы, который должен отслеживать вставку-удаление строк-столбцов таблицы и обновлять ее контент. То есть по сути это - некий контроллер, имеющий что-то типа OnRowInserted(MyTable* table, int row), OnColumnRemoved(MyTable* table, int column) и т.д.
Хочется чтобы GridMan (и только он) отвечал за пересчет позиций всех ячеек. Ни о каком содержимом он не знает и понятия не имеет это таблица или еще кто. А обновлять контент будет тот кто его позовет (напр сама таблица). Ведь для собсно пересчетов строк/столбцов никакое UI не нужно. А вот читать пересчитанное могут многие - поэтому вариант с мапой не очень удобен.

А куда ноды теперь подевались?
Пока никуда  Улыбающийся, это я хочу чтобы GridMan ничего о них не знал
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


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

Ну ок, GridMan пересчитает значения в таблице и т.д. Да, ему гуй не нужен, это контроллер и ничего больше.
Получается, для каждой таблицы свой GridMan, так?
А ноды то как обновляться будут?
И где они тогда живут то? Улыбающийся
Записан

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


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

Ну ок, GridMan пересчитает значения в таблице и т.д. Да, ему гуй не нужен, это контроллер и ничего больше.
Получается, для каждой таблицы свой GridMan, так?
А ноды то как обновляться будут?
И где они тогда живут то? Улыбающийся
Живут они в др структуре (графе). Есть довольно обильный UI (класс окна и др) которые и будут обновлять, визуализировать и.т.п.

Вот "для каждой таблицы свой GridMan" мне не нравится. Обратите внимание что GridMan не имеет НИКАКИХ собственных данных/полей, он все берет из интерфейса "источника" (в данном случае CNode). В варианте с наследованием это недостаточно гибко - заточено на чайлды данного нода. В др ситуации напр никаких "нодов" нет, а есть просто виджеты (но опять-таки хранящие строку/столбец). Как тогда воспользоваться общим GridMan ?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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