Здравствуйте господа!
Делаю сейчас небольшое приложение на QT4. Главное окно состоит из трех областей, подобных любому классическому mail-клиенту. То есть состоит окно из
- Дерева папок (слева)
- Списка записей в текущей выбраной папке (справа сверху)
- Текста текущей выбраной записи (справа снизу)
+--------+---------------------+
| Дерево | Запись 1 |
| папок |#Запись#2############|
| | Запись 3 |
| | Запись 4 |
| +---------------------+
| | Это текст записи 2 |
| | |
| | Всем привет! Вот |
| | такая запись |
| | с текстом |
+--------+---------------------+
В данный момент реализовал дерево папок (считывается из XML файла в DOM, потом преобразуется в Item как в примере Editable Tree Model).
Теперь нужно каким-то образом при выборе ветки, содержащей записи, показывать список этих записей (справа сверху). Заголовки записей (название, дата создания, ссылка на файл) хранятся в том же XML дереве. А текст записей лежит в отдельном файле для каждой записи.
И вот вопрос - как лучше реализовать данную структуру на уровне объектов? Дерево планируется большое, записей много, ~50Мб текстовой информации, размер текста каждой записи ~20-50Кб текста в виде rich-форматирования.
Я планирую сделать так
Сейчас есть объект "model", включающий в себя ссылку на корневой Item-объект дерева папок. И есть куча Item-объектов дерева папок. Они храняться все время работы программы.
В классе Item-объектов дерева я сделаю еще одно свойство - ссылку на объект класса "tablemodel". Можно ли это сделать? Сможет ли вид отобразить такую модель с "лишними" свойствами? "Tablemodel" в свою очередь является моделью таблицы записей, хранимых в папке.
"Tablemodel" в свою очередь является моделью таблицы записей, хранимых в папке. При выборе папки, в которой есть записи, воткну соответсвующий объект "tablemodel" в вид таблицы записей (справа сверху). Ну и динамически подгружу текст первой записи, и покажу его справа внизу.
Правильна ли последовательность действий? Или в таком приложении надо делать структуру и взаимодействие объектов как-то по-другому? Просто я слабо занаю как C++ так и QT, и не хотелось бы переделывать проект из-за того, что изначально был выбран не тот подход к конструкции классов.