Название: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 13:33 Здравствуйте товарищи проггеры;
Может быть (читай: стопудово) пишу не туда вообще, но писать больше некуда, поэтому уж извините... У меня очень и очень дебильный вопрос, наверное недостойный даже *школоло*, но мне все-равно ничего не остается как его задать, хотя ... В общем обрисую ситуацию : Начинал писать диплом; Сам я инженер и к программированию имею не прямое отношение, но решил взять тему не по профилю и руководитель мой согласился и дал... даже такую, чтобы я сильно не заморачивался : написать программу создание фотоархива + собственно просмотрщик фоток оттуда; Знания в области программирования у меня имелись\имеются... да и опыт тоже хоть и небольшой, но был;... , поэтому даже не думал что с этим дипломом возникнут проблемы. Почти сразу решил что писать на Qt C++; Затарился литературой как печатной так и электронной; Естественно оставил самое нужное: (списочек довольно попсовый наверное, но ... ) Жасмин Бланшет, Макс Шлее и еще парочка авторов; Прочитал по нескольку раз с анализом и разбором каждого примера и вытекающими... в общем был уверен в себе Наконец решил писать диплом; Оставил себе месяц\полтора месяца на написание... И вот начинаю писать... и понимаю что... В общем нихрена не понимаю; Не знаю с чего начать, как начать, куда начать; В голове куча всего но пристроить не могу все эти теоритические знания; В общем тихий ужас; Знаю что еще один быстрый прогон по каждой книге мне не удасться; Но и искать нужную инфу по строчкам точно не смогу; Осталось у меня времени наверное где-то до 10 числа июня (по оптимистичным прогнозам, + надо писать теорию а там куча всего. В общем к 5 июню ... Вот теперь собственно и: Люди добрые, мы сами не местные) помогите чем можете; А если серъезно - тему я наверху обрисовал : приложение автоматического создания фотоархива и бла бла бла... короче обычный просмотрщик типа faststoneviewer, picasa, xn, gn и т.д Я даже не знаю какие советы мне нужны : с какими классами лучше работать, стоит ли работать только со "своими" библиотеками (qt creator) или подключать какие-то от постороннего разработчика - например библиотеки для работы с изображениями; какие виджеты лучше использовать, на какие классы стоит обратить внимание; и т.д Я уже сказал что даже не знаю какие советы мне нужны, поэтому люди: Если есть информация, которая по вашему мнению мне может помочь в написании.. отписывайтесь; P.S не судите строго за наглость и сумбурность; уже отчаялся; заранее всех благодарю; Название: Re: Пишу диплом!!! Отправлено: Пантер от Май 12, 2011, 13:38 Сам уже не напишешь. Можешь кому-нибудь денег заплатить, чтобы написали, но времени уже реально мало осталось. Кстати, описательная часть самая сложная, сам в прошлом году диплом писал.
Название: Re: Пишу диплом!!! Отправлено: meego_man от Май 12, 2011, 13:57 Чего же так категорически? Я писал диплом за месяц, причем на англ (который в тот момент был на достаточно плохом уровне). Судя по описанию само приложение простейшее, работы на пару-тройку выходных. А вот описательная часть конечно муторная. Для начала было бы неплохо выложить примерный каркас Вашего диплома, сколько страниц от вас ожидают, включаются ли туда страницы с кодом (если да, то вообще лафа). Какие требования к самому приложению: поддержка клиент/серверной технологии (архив на одном компе, просмоторщик на другом), нужна ли поддержка быстрого поиска по определенным критериям (возможно потребуется база данных с соответствующими полями) и т.п. А то из поста толком ничего непонятно, либо это я такой непонятливый ;)
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 14:42 касаемо времени :
- у меня абсолютно свободны все дни вплоть до получения диплома - никакой работы, учебы, каких-то встреч и т.д - весь этот срок у меня выделен на дипломную; касаемо приложения : - да оно легкое; - мой руководитель "инженер выч.техники", а не проггер; как и я; он пошел мне навстречу и никаких требований к приложению не было; Главное чтобы результат совпадал с названием темы и адекватно функционировал; касаемо того что же конкретно мне надо получить на выходе : - естественно я не делаю какой - то монструозный комбайн. - главное окно куда выводятся графические файлы (точнее их миниатюры ) - "окно" (как я понял лучше всего label ) для вывода выбраного изображени , естественно уже полноразмерно - окно для выбора альбомов (папок) : я просто решил (может быть и не лучшее решение) не использовать "дерево", а связывать папки с картинками напрямую с каким-то альбомом - т.е альбом это по сути папка + там конечно свои нюансы есть.. естественно я не знаю как это будет работать, но по крайней мере это вроде упрощает работу , чем как класифицировать по каким-то параметрам; - алгоритм поиска изображений - ищет и добавляет\связывает отдельную папку с альбомом; - и еще какие-то задачи, которые появятся во время работы; Естественно изначально задачи стояли совсем другие; но сейчас я максимально все упростил для себя; главное сдать его, а на оценку .. хрен с ней КОнечно если я успею все сделать, то какие-то фичи добавлю, чтобы приложение голым не было, но каркас приложения я Вам описал. P.s спасибо, за оказанное внимание Название: Re: Пишу диплом!!! Отправлено: blood_shadow от Май 12, 2011, 15:41 мне бы такой диплом... а то мехатроника бранная...
Название: Re: Пишу диплом!!! Отправлено: NicK от Май 12, 2011, 18:16 Советую посмотреть в раздел Graphics Viewers на qt-apps.org.
http://qt-apps.org/index.php?xcontentmode=4222 (http://qt-apps.org/index.php?xcontentmode=4222) Выберите какой-нибудь проект и посмотрите реализацию. Может очень сильно помочь в разработке собственного. Или, если в условиях задачи это не оговорено, просто сделайте форк любого понравившегося проекта... ;) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 19:30 Спасибо за совет: некоторые примеры уже (на глаз - без "жесткого" досмотра) взял на заметку, хотя есть подозрение (исходя из опыта), что разобраться в чужом коде будет не очень просто; Но посмотрим... Название: Re: Пишу диплом!!! Отправлено: Ubuntu_linux от Май 12, 2011, 20:05 Можно использовать QListWidget или QTableWidget
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 20:17 а можно по-конкретнее?
Нет, я конечно знаю назначение обоих... но для чего конкретно вы предлагаете их использовать в моей ситуации; естественно свои предположения у меня тоже есть, но хотелось бы удостовериться... В общем поясните, плз Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 12, 2011, 20:58 1. SQLite для базы данных.
2. MVC для получения и отображения данных 3. http://libqxt.bitbucket.org/doc/0.6/qxtflowview.html для красоты =) 4. переопределение QItemDelegate для отображения таблицы картинок ну и т.д. =) 5. итого дня два взрыва мозга и всё будет написано =) Название: Re: Пишу диплом!!! Отправлено: Ubuntu_linux от Май 12, 2011, 21:02 Поясню, для самого простого(примитивного) случая. Будем использовать QTableWidget (таблица ) в качестве основного виджета где будут находится миниатюры изображений.
В качестве айтемов будем использовать QTableWidgetItem с методом Код
Код
В результате будем иметь сетку с изображений test.png Название: Re: Пишу диплом!!! Отправлено: Sancho_s_rancho от Май 12, 2011, 21:20 1. SQLite для базы данных. Ну вы и советчик. Это два дня для того, кто этими технологиями уже владеет и знает особенности распространения этого добра на целевой платформе.2. MVC для получения и отображения данных 3. http://libqxt.bitbucket.org/doc/0.6/qxtflowview.html для красоты =) 4. переопределение QItemDelegate для отображения таблицы картинок ну и т.д. =) 5. итого дня два взрыва мозга и всё будет написано =) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 21:38 1. SQLite для базы данных. 2. MVC для получения и отображения данных 3. http://libqxt.bitbucket.org/doc/0.6/qxtflowview.html для красоты =) 4. переопределение QItemDelegate для отображения таблицы картинок ну и т.д. =) 5. итого дня два взрыва мозга и всё будет написано =) Согласен на счет того, что : "Это два дня для того, кто этими технологиями уже владеет", но у меня Слава Богу есть больше двух дней; В принципе я этого и хотел - чтобы кто-то ткнул пальцем и показал куда именно надо смотреть, поэтому спасибо... ... но я еще не просмотрел инфу по поводу SQlite; не уточните : а для чего нам тут именно базы данных? Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 21:42 Поясню, для самого простого(примитивного) случая. Будем использовать QTableWidget (таблица ) в качестве основного виджета где будут находится миниатюры изображений. В качестве айтемов будем использовать QTableWidgetItem с методом ... Спс; Я примерно так и предполагал, но просто не думал,что можно так просто в ячейки грузить изображения... Кстати, касаемо миниатюр; Мы то в ячейки грузим уже готовое изображение, ведь так?! А нам необходимы миниатюры, причем не одной а нескольких (очень многих) фотографий; Я просто читал насчет этого - думал, что все просто, но оказывается с миниатюрами тот еще геморрой у людей бывает; Не только проблемы с реализацией, но и кто-то на скорость жаловался и т.д; В общем кто в курсе того "как и что" - поясните плз; спс. Название: Re: Пишу диплом!!! Отправлено: Ubuntu_linux от Май 12, 2011, 22:02 Сначала так сделай , а потом .......
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 12, 2011, 23:27 Ок; Я вроде немного разобрался с QTableWidget; Почитаю еще описание...
А есть еще предложения по реализации "окна для отображения миниатюр"? Или QTableWidget самый "реальный" вариант для решения этой задачи? Название: Re: Пишу диплом!!! Отправлено: meego_man от Май 12, 2011, 23:33 Ок; Я вроде немного разобрался с QTableWidget; Почитаю еще описание... Еще предлагали QListWidget/QListView. Также часто используются для этих случаев. Для отображения большой картинки я бы все таки посоветовал вместо QLabel использовать что нибудь на основе QGraphicsView/QGraphicsScene (там достаточно легко реализовать тот же зум, если он нужен).А есть еще предложения по реализации "окна для отображения миниатюр"? Или QTableWidget самый "реальный" вариант для решения этой задачи? Название: Re: Пишу диплом!!! Отправлено: Авварон от Май 12, 2011, 23:50 Ну сцену и для миниатюр можно использовать.
Так же в сцене можно огл ускорение прикрутить. Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 00:24 Ну сцену и для миниатюр можно использовать. Так же в сцене можно огл ускорение прикрутить. Да, кстати я думал об этом и в принципе собирался использовать именно ее, потому что сцена "гибче" (хотя мне сейчас конечно надо больше думать о простоте реализации), но совершенно не знаю как с какой стороны подойти к решению этой задачи: - очень много "муток" разных и нюансов связанных с самим scene (но это решаеМо) + - сходу всплывает проблема с самими миниатюрами; Как я уже отписывался - это тот еще геморрой (как говорят люди) - создание миниатюр изображений; Если есть конкретные мысли касаемо решения проблемы с миниатюрами, то прошу их в студию! спс Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 00:40 Еще предлагали QListWidget/QListView. Также часто используются для этих случаев. Для отображения большой картинки я бы все таки посоветовал вместо QLabel использовать что нибудь на основе QGraphicsView/QGraphicsScene (там достаточно легко реализовать тот же зум, если он нужен). А Если все ж выбирать между Qlist и QTable: разве table не лучше подходит? ... Кстати, я правильно понял, что между ***Widget и ***View отличие заключается в том, что последний более "свободный"? (т.е больше каких-то настроек) Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 13, 2011, 01:09 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 - общее офомрление стилями и прочим =) удачи! за месяц точно должен управиться =) если сядешь за комп как в попу укушеный ёжик - напишешь за пару дней =) Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 13, 2011, 01:21 по поводу миниатюр, если они понадобятся
1. изначально объяви что твоя программа поддерживает только JPG формат =) не будет проблем с плагинами форматов изображений =) 2. класс QImage ответить на ВСЕ твои потребности. Название: Re: Пишу диплом!!! Отправлено: Авварон от Май 13, 2011, 01:24 не jpg а png
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 09:36 удачи! за месяц точно должен управиться =) Спс; У меня прямо-таки оптимистичный настрой появился; Я даже убрал ствол из верхнего ящика стола в нижний;если сядешь за комп как в попу укушеный ёжик - напишешь за пару дней =) ... И на счет использования именно *.jpg, если честно я так и собирался сделать ... не jpg а png А вот тут немного не понял.Название: Re: Пишу диплом!!! Отправлено: Пантер от Май 13, 2011, 09:42 У jpg проблема с плагинами может быть. Поддержка же png не требует плагинов.
Название: Re: Пишу диплом!!! Отправлено: Igors от Май 13, 2011, 09:51 Спс; У меня прямо-таки оптимистичный настрой появился; Ничего, это проходит :)Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 09:53 Не знал... Хотя думается , что как бы мне ни хотелось боюсь не получится делать прогу в расчете только на *.png - в том смысле что формат не очень сильно распространен (ну может быть и распространен... я просто сравниваю с тем же *.jpg)
Программа (если я ее напишу) которая читает только *.png - "ну не знаю, ... " мне скажут при защите Название: Re: Пишу диплом!!! Отправлено: Пантер от Май 13, 2011, 09:53 Спс; У меня прямо-таки оптимистичный настрой появился; Ничего, это проходит :)the_moop, ты пистолет-то далеко не убирай. ;) Название: Re: Пишу диплом!!! Отправлено: meego_man от Май 13, 2011, 13:58 Не знал... Хотя думается , что как бы мне ни хотелось боюсь не получится делать прогу в расчете только на *.png - в том смысле что формат не очень сильно распространен (ну может быть и распространен... я просто сравниваю с тем же *.jpg) а чего мучаться то с форматами, смотрим в Qt Assistant класс QImage.Там и jpg и png и еще несколько форматов. Единственно нужно помнить что с прогой придеться копировать все dll для чтения соответствующих форматов (из Qt директории). По поводу миниатюр, то тут проблема опять же решаема, у человека был гемор каждый раз их генерировать, вам же нужно их сгенерировать раз для каждого изображения и записать куда нить (хотя бы во вложенную папку каждого альбома, скажем папку назовете thumbnails).Программа (если я ее напишу) которая читает только *.png - "ну не знаю, ... " мне скажут при защите Название: Re: Пишу диплом!!! Отправлено: meego_man от Май 13, 2011, 14:00 Да, кстати я думал об этом и в принципе собирался использовать именно ее, каких именно? в QGraphicsScene можно свободно запихивать стандартные виджеты, так что велосипед изобретать не придеться. Зато есть куча преимуществ, типа анимации и эфектов - ну это для красивостей когда все будет закончено ;Dпотому что сцена "гибче" (хотя мне сейчас конечно надо больше думать о простоте реализации), но совершенно не знаю как с какой стороны подойти к решению этой задачи: - очень много "муток" разных и нюансов связанных с самим scene (но это решаеМо) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 15:32 Взял книжный пример QGraphicScene и переделываю тихонько под свои нужды;
выкинул ненужное (на мой взгляд); Сейчас пытаюсь "вывести картинку на сцену", однако она выводит изображение так, что в центре находится ее верхний левый угол; А мне нужно чтобы изображение заполнило все окно (т.е например большое изображение уменьшало до размеров окна); главное, что изображение под размеры окна я подогнал : fitInView() а вот вывести реально в центре - пока не получается Уверен, что есть какие-то свойства или методы, но уже час ищу - не нашел ... спс Название: Re: Пишу диплом!!! Отправлено: meego_man от Май 13, 2011, 16:13 а вот вывести реально в центре - пока не получается Лучше всего выкладывать свой код сюда в атачменте, так легче понять где ошибка...Уверен, что есть какие-то свойства или методы, но уже час ищу - не нашел ... Название: Re: Пишу диплом!!! Отправлено: GreatSnake от Май 13, 2011, 17:42 Цитировать Сейчас пытаюсь "вывести картинку на сцену", однако она выводит изображение так, что в центре находится ее верхний левый угол Цитировать QGraphicsScene scene(QRectF(-100, -100, 640, 480)); Зачем сдвигаешь начало координат?Название: Re: Пишу диплом!!! Отправлено: GreatSnake от Май 13, 2011, 18:02 а мне нужно чтобы чтобы изображение подстраивалось под размеры окна а не наоборот Ну дык и надо про это говорить.См. здесь (http://www.prog.org.ru/index.php?topic=8266.msg102364#msg102364) или здесь (http://www.prog.org.ru/index.php?topic=15459.msg102220#msg102220). Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 13, 2011, 18:03 посмотрим, спс
Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 13, 2011, 18:38 я, конечно, извиняюсь, что опять со своими 5ю копейками, но лучше сначала сделать базу - т.е. ядро системы, которое будет хранить данные, а уже потом отображать эти данные.
на время написания "внутренней части" всё можно проверять через qDebug(), или выводить что-то простое - к примеру, не сами картинки, а только пути к ним.. Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 14, 2011, 00:13 Так а под "внутренней системой" Вы подразумеваете базу данных? я верно понял? да, я имею в виду именно бд+мвцИли же: MVC ? делать это всё равно придётся =) а там всё достаточно просто, что бы уже через час видететь какие-то радующие результаты (причём которые уже переписывать вряд ли придётся) программа всё равно будет хранить какую-то информацию - список файлов, их названия, структура альбомов. если воспользоваться шаблоном MVC, то гуй - это дело 10ое и, к тому же, достаточно просто заменяемое. поэтому если написать базу, то смотреть её можно будет через стандартные QTableView + QTreeView. и в последствии их будет просто поменять на другой View или дописать к ним делегатов для красивого отображения. на самом деле, если убрать БД, а использовать QDirModel в качестве "албомы-фото" (т.е. использовать структуру директорий с файлами в качестве структуры фотоальбома) - то всё будет ещё проще и напишется за 2 часа полностью QDirModel + QTreeModel в качестве структуры альбомов (пример описан в ассистанте MVC). настроенный QDirModel + QxtFlowView в качестве листальщика фоток. всё =) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 14:32 последовал Вашему совету : начал работать с\над БД;
Не знаю - то ли я чем-то не тем занимаюсь,то ли мне начало вести, но с бд все в принципе оказалось именно так как Вы и говорили - относительно просто; Может быть к ночи потихоньку разберусь что к чему Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 19:31 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) Разбираюсь с базами данных... Сейчас задумался над тем, что ...: Мне необходимо будет базу данных описанную в цитированном тексте заполнять; Т.е нужно будет написать что-то вроде поискового алгоритма (немного "накрутил" конечно) который будет добавлять и искать ... (я уже определился что буду работать только с jpg) ... картинки; Я еще определяюсь с базой данных - скоро дочитаю... поэтому заполнение бд становится актуальным; В общем я подозреваю примерно как можно заполнить базу, но работа пойдет быстрее если кто-то поможет советом или поделиться мыслью Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 19:55 +
Дочитываю всем известную книгу Жасмин Бланшет - раздел посвященный базам данных; Основы ... и еще, чтобы материал лучше осознать просмотрел раздел про МВЦ; Сейчас дошел до места где началась тягомотина : работа с формами, редактирование базы данных в окне и т.д..., которая конкретно сейчас думается мне совсем не нужна? я прав? и в связи с этим Хочу спросить - мне получается сейчас уже можно составить БД? Просто исходя из того, что я только что прочел - делать тут почти нечего; вот и думаю : в чем подвох; Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 20:00 И еще:
Я так пока и не решил - эти таблицы должны быть связанными между собой КЛЮЧАМИ или это совсем необязательно? Например, как я понял: можно связать "таблицу с файлами" с "таблицей с альбомами", тогда третья таблица получается не будет нужна; С другой стороны : при таком подходе я вижу проблему в заполнении таблиц; В общем я запутался: подгоните кто-нить свежу мысль , так как я еще всю информацию не "вкурил" Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 14, 2011, 21:16 1. для работы с SQLite базой я испльзую sqlitestudio-2.0 - работает отлично, позволяет быстро спроектировать и забить базу рыбой (тестовыми данными), что бы в Qt уже работать удобно было.
2. связывать ключами на уровне БД таблицы не обязательно. ты эти связки вполне можешь реализовать кодом - меньше заморочек будет. 3. в какие-то моменты ты можешь сам писать SQL запросы, что бы получать сразу нужные тебе данные в QSqlTableModel 4. "таблица файлов" может в себе содержать поле albumId для каждой записи. тогда третья таблица действительно будет не нужна, код программы окажется ещё проще, только один файл будет только одном альбоме. в случае промежуточной таблицы один файл может находиться в нескольких альбомах (пожалуй действительно излишняя функция =) ) 5. да, по сути ты проектируешь базу используя sqlitestudio-2.0, забиваешь ручками туда тестовые данные (3-4 файла + 1-2 альбома), настраиваешь модели, подключаешь к ним вьюхи всё =) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 21:18 1. для работы с SQLite базой я испльзую sqlitestudio-2.0 - работает отлично, позволяет быстро спроектировать и забить базу рыбой (тестовыми данными), что бы в Qt уже работать удобно было. да, тут я кстати сразу не сообразил, что это прямо отдельная ... А проблемы какие-то в освоении могут быть? ... хотя сейчас качну - проверюНазвание: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 21:26 думаю все же еще придется мне перечитать "про базы данных", а пока:
но все-таки, как мне эти сами "таблицы" заполнять? Я так понимаю мне придется поработать с QDirModel? Или есть какие еще варианты? Просто думается в случае вложенных папок не все так просто будет - особенно если учесть для чего мне все это нужно в итоге. Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 14, 2011, 21:37 2.3. разобраться с моделью дерева, однако хорошая описана в examples и ищется в поиске хелпа по "Simple Tree Model Example" - её просто надо взять оттуда и чуть чуть переправить что бы она стала универсальной, и сохранить себе на будущее =) она может понадобиться для отображения дерева альбомов. 2.3. но скорее всего ещё понадобится создавать свою собственную модель, наследуемую, скорее всего от QAbstractListModel, ведь список альбомов/директорий в текущем "каталоге" - это лист. все подробности в мануале, часов за 6 разобраться реально со средним уровнем программирования. но пока дойдёт до этого пункта уже нахватается понимания, так что 2 часа :) + хотел такое спросить: В принципе я конечно понимаю, что использование QDIR*** и "дерева" должно упростить задачу при работе с директориями и т.д... , но! ... думается мне, что это нечто избыточное в данном случае; Так вот - если у меня "альбомы" связаны с конкретными "фотографиями", то почему мне просто не выводить список альбомов без мутни с "деревьями"? ведь если у меня есть имя файла (как я понял - это полный его путь) и имя альбома (полный путь папки) то и в дереве необходимости не будет; Хотя конечно есть нюансы - если папок с картинками будет довольно много - то и альбомов будет много.... Да уж; Чем больше прочитываю, тем больше вопросов; спс и извиняюсь за свои возможно () дЭбильные вопросы Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 15, 2011, 11:48 развлекайся :)
надо будет только скачать и собрать Qtx, в файле проекта поменять пути на то, куда ты установишь Qxt, и в файле mainwindow.cpp установить путь к папке фотографий. dirModel->setRootPath("D:\\!Photos"); разумеется всё сыровато да кривовато (за 15 минут, фигли), но что бы понять что к чему да как - тебе точно хватит :) Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 16, 2011, 13:46 запустил; спс;
я пока не смотрел "что да как", но по-крайней мере собрал qxt... теперь могу со спокойным сердцем закончить бд Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 16, 2011, 13:54 + :
хотел спросить - есть ли какая-то принципиальная разница в работе с бд на sqlitestudio и в qtcreator'e? просто в криэйторе есть возможность использовать вместо sql запросов обычный код c++; просто, вы же наверное не просто так посоветовали ее..поэтому хотел уточнить Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 16, 2011, 14:54 + : sqlitestudio позволит тебе работать с базой данных без пограммирования во время разработки и отладки.хотел спросить - есть ли какая-то принципиальная разница в работе с бд на sqlitestudio и в qtcreator'e? просто в криэйторе есть возможность использовать вместо sql запросов обычный код c++; просто, вы же наверное не просто так посоветовали ее..поэтому хотел уточнить не сразу же ты сможешь писать в базаду? для начала прочитай что там есть, а и когда писать туда будешь - тоже ведь надо проверять что всё пишется правильно. для этого и пользуй sqlitestudio - набил ручками данные, в Qt прочитал. сделал через Qt новые записи в базу - глянул через sqlitestudio что всё записалось верно.. Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 16, 2011, 15:24 спасибо; я так и понял , но просто хотел уточнить - это вроде как получается менеджер;
Название: Re: Пишу диплом!!! Отправлено: ieroglif от Май 16, 2011, 16:36 спасибо; я так и понял , но просто хотел уточнить - это вроде как получается менеджер; типа того. просто инструмент облегчающий разработкуНазвание: Re: Пишу диплом!!! Отправлено: the_moop от Май 23, 2011, 18:23 вот контекст - это функция которая производит поиск файлов по маске :
Код
А вот собстенно строчка, по которой у меня вопрос Код
я никак не могу "вкурить" что за фигня там с первым аргументом? Почему я например не могу просто впихнуть туда строку-маску? Никак не пойму, хотя в доках тоже написано, что этот аргумент предназачен для для указания маски Надеюсь я понятно изложил суть вопроса Во избежание вопросов и для того чтобы стало еще яснее: Код
спс за внимание Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 23, 2011, 18:30 я просто понимаю, что что-то упустил ... но вот что...
Название: Re: Пишу диплом!!! Отправлено: kambala от Май 23, 2011, 19:21 а что непонятного-то?
Код первый параметр (список строк) - список допустимых расширений файлов. m_ptxtMask->text() вернет тебе одну строку "*.cpp *.h", а split(" ") разобьет эту строку по пробелам на список строк, т.е. у тебя выйдет список из 2-х элементов: ["*.cpp", "*.h"] Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 23, 2011, 19:43 значит все именно так как я понял, но тут всплывает самый главный вопрос:
та же конструкция должна будет работать, если вместо : m_ptxtMask->text() "пихнуть" допустим : *.jpg ? Просто я так как бЭ и делаю, но вот.. результата нету Название: Re: Пишу диплом!!! Отправлено: kambala от Май 23, 2011, 19:50 Код так не работает? Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 23, 2011, 23:12 Код
Как Вы можете видеть я пытаюсь записать имя файла в таблицу Бд; Пытаюсь - потому что что - то не выходит; Сам думаю, что проблема в несоответствии типов, но может быть еще что -то есть... В общем, рад любой помощи спс. Название: Re: Пишу диплом!!! Отправлено: Пантер от Май 24, 2011, 07:26 Код
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 24, 2011, 08:19 Мне видимо снова надо будет перечитать раздел связанный с базами данных;
Спасибо большое; Все прекрасно работает: Записал пути к изображениям в базу данных - буду модифицировать код; (если у кого-то есть мысли на этот счет - буду рад любым предложениям) спс за внимание Название: Re: Пишу диплом!!! Отправлено: Авварон от Май 26, 2011, 18:57 топик стартер, личку проверяй
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 30, 2011, 11:27 ) я уже проверил)
Название: Re: Пишу диплом!!! Отправлено: the_moop от Май 30, 2011, 11:35 сейчас на прогу немного подзабил - пишу оформление... а на прогу потом будет недели две еще
|