![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
explorer85 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 18.3.2011 Пользователь №: 2517 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
ЗАДАДЧА.
Исходные данные: Есть две сущности 1. Задача
2. Проект
Эти сущности можно добавлять в списки 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)) |
|
|
![]() |
explorer85 |
![]()
Сообщение
#2
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 18.3.2011 Пользователь №: 2517 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
по сути у тебя аналог окна виндового Explorer (дерево папок слева, содержимое папки - справа) только не для файловой системы, а для дерева проектов Да попал в точку. Щас потыркал проводник та же концепция. Ну только разве что эти два вида у меня доступны не одновременно. А так тоже самое слева проекты, справа задачи)) и если обратил внимание то и модель фильтрации и сортировки для каждого вида тоже своя. Ведь в проводнике если справа в списке сортировать элементы то влевом они остаются в том порядке каком и были. ну это так философия. Хотя интересно как там сделано)) Ты упоминаешь, что передаёшь указатель на экземпляр своего класса. При изменениях меняется счётчик. Уведомлений, конечно же, никаких не произойдёт, их надо инициировать. Я бы сделал проверку по таймеру (скажем, раз в секунду) счётчика, и при его изменении обновлял бы представление, которое не в фокусе (тут спорный вопрос - наверное, вместе со счётчиком полезно запоминать инициатора изменений, чтобы его не обновлять) Да тут все проще зачем таймер если есть сигналы и слоты ![]() И еще один ньюанс... не хотел пугать просто... Допустим мне захотелось сделать группировку списка задач по каким либо признакам... например по важности (в структуре Task есть такое поле importance) от (0 - 5) какое я щас вижу решение? делать еще одну связку модель + представление + делегат, передавать модели указатель на Storage с данными .........ну итд. То есть получается некислое дублирование кода, рост сложности кода проекта ну итд со всеми вытекающими.... И я так наверное и сделаю если никто ничего не посоветует выдающегося.... Эх где вы победители школьных олимпиад, эйнштейны, знатоки qt ![]() Извиняюсь за флуд... но мне почему то кажется что если бы эту тему увидел парень из troolteh котроый писал MVC фреймворк он бы сказал "Не парься брат делай void QAbstractItemModel::reset () для второй модели" ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 3.6.2025, 11:35 |