Russian Qt Forum
Март 28, 2024, 17:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: Пишу диплом!!!  (Прочитано 33989 раз)
the_moop
Гость
« Ответ #30 : Май 13, 2011, 15:32 »

 Взял книжный пример QGraphicScene и переделываю тихонько под свои нужды;
 выкинул ненужное (на мой взгляд);
 
 Сейчас пытаюсь "вывести картинку на сцену", однако она выводит изображение так, что в  
 центре находится ее верхний левый угол; А мне нужно чтобы изображение заполнило все  
 окно (т.е например большое изображение уменьшало до размеров окна);
 главное, что изображение под размеры окна я подогнал : fitInView()

 а вот вывести реально в центре - пока не получается
 Уверен, что есть какие-то свойства или методы, но  уже час ищу - не нашел ...

спс
 
« Последнее редактирование: Май 13, 2011, 15:55 от the_moop » Записан
meego_man
Гость
« Ответ #31 : Май 13, 2011, 16:13 »

а вот вывести реально в центре - пока не получается
 Уверен, что есть какие-то свойства или методы, но  уже час ищу - не нашел ...
Лучше всего выкладывать свой код сюда в атачменте, так легче понять где ошибка...
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #32 : Май 13, 2011, 17:42 »

Цитировать
Сейчас пытаюсь "вывести картинку на сцену", однако она выводит изображение так, что в центре находится ее верхний левый угол
Цитировать
QGraphicsScene scene(QRectF(-100, -100, 640, 480));
Зачем сдвигаешь начало координат?
Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #33 : Май 13, 2011, 18:02 »

а мне нужно чтобы чтобы изображение подстраивалось под размеры окна а не наоборот
Ну дык и надо про это говорить.
См. здесь или здесь.
Записан

Qt 5.11/4.8.7 (X11/Win)
the_moop
Гость
« Ответ #34 : Май 13, 2011, 18:03 »

посмотрим, спс
« Последнее редактирование: Май 13, 2011, 18:06 от the_moop » Записан
ieroglif
Гость
« Ответ #35 : Май 13, 2011, 18:38 »

я, конечно, извиняюсь, что опять со своими 5ю копейками, но лучше сначала сделать базу - т.е. ядро системы, которое будет хранить данные, а уже потом отображать эти данные.
на время написания "внутренней части" всё можно проверять через qDebug(), или выводить что-то простое - к примеру, не сами картинки, а только пути к ним..
Записан
ieroglif
Гость
« Ответ #36 : Май 14, 2011, 00:13 »

Так а под "внутренней системой" Вы подразумеваете базу данных? я верно понял?
Или же: MVC ?
да, я имею в виду именно бд+мвц
делать это всё равно придётся =) а там всё достаточно просто, что бы уже через час видететь какие-то радующие результаты (причём которые уже переписывать вряд ли придётся)
программа всё равно будет хранить какую-то информацию - список файлов, их названия, структура альбомов.
если воспользоваться шаблоном MVC, то гуй - это дело 10ое и, к тому же, достаточно просто заменяемое.
поэтому если написать базу, то смотреть её можно будет через стандартные QTableView + QTreeView. и в последствии их будет просто поменять на другой View или дописать к ним делегатов для красивого отображения.
на самом деле, если убрать БД, а использовать QDirModel в качестве "албомы-фото" (т.е. использовать структуру директорий с файлами в качестве структуры фотоальбома) - то всё будет ещё проще и напишется за 2 часа полностью
QDirModel + QTreeModel в качестве структуры альбомов (пример описан в ассистанте MVC).
настроенный QDirModel + QxtFlowView в качестве листальщика фоток.
всё =)
Записан
the_moop
Гость
« Ответ #37 : Май 14, 2011, 14:32 »

последовал Вашему совету : начал работать с\над БД;

Не знаю - то ли я чем-то не тем занимаюсь,то ли мне начало вести, но с бд все в принципе оказалось именно так как Вы и говорили - относительно просто;

Может быть к ночи потихоньку разберусь что к чему
Записан
the_moop
Гость
« Ответ #38 : Май 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)
... картинки; Я еще определяюсь с базой данных - скоро дочитаю... поэтому заполнение бд становится актуальным;

В общем я подозреваю примерно как можно заполнить базу, но работа пойдет быстрее если кто-то поможет советом или поделиться мыслью
« Последнее редактирование: Май 14, 2011, 19:33 от the_moop » Записан
the_moop
Гость
« Ответ #39 : Май 14, 2011, 19:55 »

+
Дочитываю всем известную книгу Жасмин Бланшет - раздел посвященный базам данных;
Основы ... и еще, чтобы материал лучше осознать просмотрел раздел про МВЦ;

Сейчас дошел до места где началась тягомотина : работа с формами, редактирование базы данных в окне и т.д...,
которая конкретно сейчас думается мне совсем не нужна? я прав?

и в связи с этим Хочу спросить - мне получается сейчас уже можно составить БД? Просто исходя из того, что я только что прочел - делать тут почти нечего; вот и думаю : в чем подвох;
« Последнее редактирование: Май 14, 2011, 20:03 от the_moop » Записан
the_moop
Гость
« Ответ #40 : Май 14, 2011, 20:00 »

И еще:

 Я так пока и не решил - эти таблицы должны быть связанными между собой КЛЮЧАМИ или это совсем необязательно?

Например, как я понял: можно связать "таблицу с файлами" с "таблицей с альбомами", тогда третья таблица получается не будет нужна;

С другой стороны : при таком подходе я вижу проблему в заполнении таблиц;

В общем я запутался: подгоните кто-нить свежу мысль , так как я еще всю информацию не "вкурил"
Записан
ieroglif
Гость
« Ответ #41 : Май 14, 2011, 21:16 »

1. для работы с SQLite базой я испльзую sqlitestudio-2.0 - работает отлично, позволяет быстро спроектировать и забить базу рыбой (тестовыми данными), что бы в Qt уже работать удобно было.
2. связывать ключами на уровне БД таблицы не обязательно. ты эти связки вполне можешь реализовать кодом - меньше заморочек будет.
3. в какие-то моменты ты можешь сам писать SQL запросы, что бы получать сразу нужные тебе данные в QSqlTableModel
4. "таблица файлов" может в себе содержать поле albumId для каждой записи. тогда третья таблица действительно будет не нужна, код программы окажется ещё проще, только один файл будет только одном альбоме. в случае промежуточной таблицы один файл может находиться в нескольких альбомах (пожалуй действительно излишняя функция =) )
5. да, по сути ты проектируешь базу используя sqlitestudio-2.0, забиваешь ручками туда тестовые данные (3-4 файла + 1-2 альбома), настраиваешь модели, подключаешь к ним вьюхи всё =)
Записан
the_moop
Гость
« Ответ #42 : Май 14, 2011, 21:18 »

1. для работы с SQLite базой я испльзую sqlitestudio-2.0 - работает отлично, позволяет быстро спроектировать и забить базу рыбой (тестовыми данными), что бы в Qt уже работать удобно было.
да, тут я кстати сразу не сообразил, что это прямо отдельная ... А проблемы какие-то в освоении могут быть? ... хотя сейчас качну - проверю
Записан
the_moop
Гость
« Ответ #43 : Май 14, 2011, 21:26 »

думаю все же еще придется мне перечитать "про базы данных", а пока:

но все-таки, как мне эти сами "таблицы" заполнять? Я так понимаю мне придется поработать с QDirModel? Или есть какие еще варианты?

Просто думается в случае вложенных папок не все так просто будет - особенно если учесть для чего мне все это нужно в итоге.
Записан
the_moop
Гость
« Ответ #44 : Май 14, 2011, 21:37 »

2.3. разобраться с моделью дерева, однако хорошая описана в examples и ищется в поиске хелпа по "Simple Tree Model Example" - её просто надо взять оттуда и чуть чуть переправить что бы она стала универсальной, и сохранить себе на будущее =) она может понадобиться для отображения дерева альбомов.

2.3. но скорее всего ещё понадобится создавать свою собственную модель, наследуемую, скорее всего от QAbstractListModel, ведь список альбомов/директорий в текущем "каталоге" - это лист. все подробности в мануале, часов за 6 разобраться реально со средним уровнем программирования. но пока дойдёт до этого пункта уже нахватается понимания, так что 2 часа Улыбающийся

+ хотел такое спросить:

В принципе я конечно понимаю, что использование QDIR*** и "дерева" должно упростить задачу при работе с директориями и т.д... , но! ... думается мне, что это нечто избыточное в данном случае;

Так вот - если у меня "альбомы" связаны с конкретными "фотографиями", то почему мне просто не выводить список альбомов без мутни с "деревьями"? ведь если у меня есть имя файла (как я понял - это полный его путь) и имя альбома (полный путь папки) то и в дереве необходимости не будет;

Хотя конечно есть нюансы - если папок с картинками будет довольно много - то и альбомов будет много....

Да уж; Чем больше прочитываю, тем больше вопросов;

спс и извиняюсь за свои возможно () дЭбильные вопросы
« Последнее редактирование: Май 14, 2011, 21:39 от the_moop » Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 23.