Russian Qt Forum

Qt => Общие вопросы => Тема начата: xintrea от Июнь 09, 2008, 16:47



Название: Структура приложения, с главным окном, подобным mail-клиенту. Как лучше сделать?
Отправлено: xintrea от Июнь 09, 2008, 16:47
Здравствуйте господа!

Делаю сейчас небольшое приложение на 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, и не хотелось бы переделывать проект из-за того, что изначально был выбран не тот подход к конструкции классов.


Название: Re: Структура приложения, с главным окном, подобным mail-клиенту. Как лучше сделать?
Отправлено: lit-uriy от Июнь 09, 2008, 23:37
посмотри пример "интервью" (%QTDIR%\demos\interview), он правда сделан на основе QDirModel, но сходная идея.