1. база данных SQLite - позволяет хратить базу данных в одном файле и таскать его вместе с программой.
кроме того в Qt практически во всех последних sdk драйвер базы SQLite идёт по умолчанию и не требуется дополнительного времени на сборку и подключение (если человек не особо с программированием - зачем ему это?)
база позволит нам хранить
1.1 таблица файлов
id(int)
file(QString)
datetime(QDateTime)
1.2. таблица дерева альбомов (у корневого альбома idParentAlbum=0)
id(int)
idParentAlbum(int)
name(int)
date(QDateTime)
1.3. таблица соотношений файлов к альбомам
rowId(int)
albumId(int)
photoId(int)
таким образом мы получаем прочную базу для ведения фотоальбома. (с полями сам играйся, логично =) )
2. получение данных из этих таблиц, и другая работа с ними в Qt элементарна. читать мануал по ключевым пунктам
2.1. QDatabase::addDatabase("QSQLITE");
2.2. QSqlTableModel::setTable(); QSqlTableModel::data(); (всё это описано хоть и на английском, но очень просто и понятно в общем мануале то ли по базам данных, то ли по MVC)
2.3. разобраться с моделью дерева, однако хорошая описана в examples и ищется в поиске хелпа по "Simple Tree Model Example" - её просто надо взять оттуда и чуть чуть переправить что бы она стала универсальной, и сохранить себе на будущее =) она может понадобиться для отображения дерева альбомов.
2.3. но скорее всего ещё понадобится создавать свою собственную модель, наследуемую, скорее всего от QAbstractListModel, ведь список альбомов/директорий в текущем "каталоге" - это лист. все подробности в мануале, часов за 6 разобраться реально со средним уровнем программирования. но пока дойдёт до этого пункта уже нахватается понимания, так что 2 часа
3. Views/Delegate классы. во-первых, рекомендую воспользоваться каталогом Qxt - там есть замечательное представление (класс, отвечающий за отображение и взаимодействие с пользователем) великолепно удовлетворяющее твоим потребностям. просто загляни по ссылке
http://libqxt.bitbucket.org/doc/0.6/qxtflowview.html и посмотри картинку.
3.1. для отображения дерева альбомов сбоку - у тебя уже есть твоя готовая модель из пункта 2.3. - просто подключил и оно само заработало.. прописал сигналы-слоты кликов и прочих действий - таблица альбомов ожила.
3.2. заработали альбомы? лови их сигналы и отправляй модели файлов (которая обращается в QSqlTableModel за данными и уже на уровне SQL запроса отработать только нужные), подключи эту модель к Qxt вьюхе - у тебя появились файлы из альбомов..
3.3. клик по фото и вывод её на фулскрин. ну это уже будет просто, мне кажется =)
4. шлифовка
4.1 добавление фотографий в альбомы, организация файлов - ты хранишь только пути к файлам, или копируешь файлы себе? =) рекомендую первое - проще и дешевле. значит разобраться с QDir.
4.2. грамотно встроить в гуй работу с альбомами - чуть позаморачиваться, но сделать красиво, что бы пользователю высвечивалось предупреждение на всякие события с файловой системой типа "у вас появились новые фотографии, в какой альбом их?", потом высветить превьюшки фоток (тем же виджетом) и т.д. =) если реально парит - делать так, как проще всего, пусть и не удобно =)
4.3. QSS - общее офомрление стилями и прочим =)
удачи! за месяц точно должен управиться =)
если сядешь за комп как в попу укушеный ёжик - напишешь за пару дней =)