crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

explorer85
  опции профиля:
сообщение 3.8.2011, 19:12
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 18.3.2011
Пользователь №: 2517

Спасибо сказали: 0 раз(а)




Репутация:   0  


ЗАДАДЧА.
Исходные данные:

Есть две сущности
1. Задача
struct Task
{
    int TaskID;
    int ProjectID;
    QString Name;
    QString Notes;
    int Importance;
.......
};


2. Проект

struct Project
{
    int ProjectID;
    QString Name;
    QString Notes;
........
};


Эти сущности можно добавлять в списки

QVector <Task> tasks;
QVector <Project> projects;

Причем
при добавлении Задачи в tasks мы указываем ей ProjectID что указывает
на ее принадлежность к проекту с таким же ProjectID

при добавлении Проекта в projects мы указываем ему ProjectID.

Таким образом получается иерархическая связь на верхнем уровне проекты
на нижнем уровне задачи.
У одного проекта может быть несколько задач.
Задача одновременно может находится только в одном проекте.
НУ вобщем я думаю понятно двухуровневое дерево получается
проекты родители, задачи дети.
-----------------------------------------------------------
Необходимо реализовать GUI для работы со списками этих сущностей.
-----------------------------------------------------------
Реализовать интерфейс ввода необходимо следующим образом, в двух видах:
1. Двухуровневое дерево проектов и задач.
Проект1
Задача 1
Задача 2
Проект2
Задача 3
Без проекта
Задача 4

Здесь можно добавить проект, удалить проект, отредактировать проект
Здесь можно добавить задачу к проекту, удалить задачу из проекта, отредактировать задачу.
Проект "Без проекта" отредактировать и удалить нельзя (он создается приложением автоматически
чтобы было куда добавлять задачи во втором виде)


2. Список задач.
Задача 1
Задача 2
Задача 3
Задача 4

Здесь можно добавить задачу, отредактировать задачу, удалить задачу
При создании задачи в этом виде она попадает в проект "Без проекта"


Вопрос как это сделать с помощью mvc фреймворка qt??????

PS: Сразу скажу я эту проблему решил но на свой взгляд криво, и не уверен в правильности решения, и некоторые вещи у меня не работают.
PPS: Если кому интересно выложу здесь свои свои решения у меня их 2 одно реализовано криво другое не реализовано есь только идея.
PPPS: Очень надеюсь на помощь людей которые считают себя реально прокаченными в MVC ...и вообще всех homosapiens))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 4.8.2011, 11:30
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата
Хотя интересно как там сделано))

да очень просто всё сделано (кхм, если работу с АПИшными Tree View и List View можно вообще назвать простыми. Это ад! Но ад программистский, а не
логический) - я делал такую вещь для одной из программ (не на Qt). Главное: отделить GUI от логики и от данных. Окно лишь показывает текущее
состояние данных, а также позволяет ввести новые данные (для создания нового элемента либо для замены содержимого существующего). После
изменения данных окно должно перерисоваться, чтобы показать текущее содержимое данных. Под перерисовкой понимается не принудительная
перерисовка всего, а, возможно, перерисовка только необходимой части окна для отображения изменений. Но само окно понятия не имеет, что поменялось!
Даже несмотря на то, что именно окно помогло ввести данные. Хранилищем окно не управляет - оно передало введённую информацию и забыло.
Перерисовалось. Типа - "я сделало всё, что могло, сотрите, что теперь в данных".
Оба окна не зависят друг от друга. Они зависят от данных. А то, как сортировать, это уже просто - выводят содержимое данных в том виде, в каком
пользователь попросил.

Цитата
зачем таймер если есть сигналы и слоты

если получится - пожалуйста. но я бы не стал городить сложную систему оповещений там, где она не нужна. По опыту знаю, что в данном случае проверка
по таймеру - достаточно. И сильно упрощает. Если непонятно рассказываю, могу схемку накидать ))

Цитата
какое я щас вижу решение? делать еще одну связку модель + представление + делегат, передавать модели указатель на Storage с данными
.........ну итд. То есть получается некислое дублирование кода, рост сложности кода проекта ну итд со всеми вытекающими.... И

таймер вновь спешит на помощь :) Сменишь счётчик вхолостую и всё готово.
Кстати говоря, таймер то таймером, он обновит раз в секунду, что нормально для обновления вида других окон (не в фокусе), но не очень то для текущего
окна (сказали сортировать - а оно отреагировало через секунду...) . Тут делаем так: то, что вызывается в обработчике таймера для обновления окон, надо
иметь возможность вызвать в любой момент. Увеличили счётчик вхолостую, вызвали процедуру. Дальше всё по накатанной

Сообщение отредактировал Алексей1153 - 4.8.2011, 11:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- explorer85   Очень интересная проблема проектирования   3.8.2011, 19:12
- - explorer85   И так мое первое решение реализованное. //класс х...   3.8.2011, 20:04
- - Алексей1153   explorer85, привет! за работу с моделью подск...   4.8.2011, 7:28
- - explorer85   Алексей1153, спасибо за совет да с мапами пологичн...   4.8.2011, 9:34
- - Алексей1153   explorer85, мне тут вот что непонятно: массивы инк...   4.8.2011, 10:06
|- - explorer85   Цитата(Алексей1153 @ 4.8.2011, 11:06) exp...   4.8.2011, 10:24
|- - explorer85   В том то и дело что я не могу врубиться как органи...   4.8.2011, 10:32
- - Алексей1153   explorer85, да, видимо я что-то не понимаю. Послеж...   4.8.2011, 10:27
- - Алексей1153   проблема описана очень ясно и крупно: ЦитатаПРОБЛ...   4.8.2011, 10:48
- - explorer85   Цитата(Алексей1153 @ 4.8.2011, 11:48) по ...   4.8.2011, 11:23
- - Алексей1153   ЦитатаХотя интересно как там сделано)) да очень пр...   4.8.2011, 11:30
- - explorer85   Спасибо за ответы, но просто для всего что вы опис...   4.8.2011, 12:14
- - PAFOS   Для начала я бы сделал одну модель и два представл...   5.8.2011, 13:53


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 22:22