crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> сохранение и загрузка сцены из SVG
Radagast
  опции профиля:
сообщение 14.6.2008, 11:15
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 14.6.2008
Пользователь №: 201

Спасибо сказали: 0 раз(а)




Репутация:   0  


Qt 4.3.2, MS VS 2005
нужно написать простенький аналог CorelDRAW (с рисованием линий, окружностей разных цветов, возможностью их выделить, перетащить, зум рисунка в целом). С возможностями классов QGraphicsXXX реализация обещает быть несложной, но встает вопрос с сохранием в SVG и загрузкой из SVG формата. Если с сохранением (судя по документации) вроде как понятно (есть QSvgGenerator), то вот документация к QGraphicsSvgItem меня обеспокоила, из нее следует, что всё содержимое файла будет представлено на сцене одним айтемом, а не множеством линий, кружочков, прямоугольников (в общем, наследников QGraphicsItem), какими они были до сохранения и которые можно было по отдельности перетаскивать, редактировать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 14.6.2008, 11:44
Сообщение #2


Администратор
****

Группа: Администратор
Сообщений: 644
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Ну почему же, вот пример из QGraphicsSvgItem -> Detailed Description:
 QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg"));
QGraphicsSvgItem *black = new QGraphicsSvgItem();
QGraphicsSvgItem *red   = new QGraphicsSvgItem();

black->setSharedRenderer(renderer);
black->setElementId(QLatin1String("black_joker"));

red->setSharedRenderer(renderer);
red->setElementId(QLatin1String("red_joker"));
Судя по описанию в SvgCardDeck.svg содержится вся карточная колода, а с помощью данного кода из svg файла достаются только джокеры.

Ключевым методом как я понял здесь является: void QGraphicsSvgItem::setElementId ( const QString & id ).

Прочитай внимательней описание данного класса. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Radagast
  опции профиля:
сообщение 14.6.2008, 12:54
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 14.6.2008
Пользователь №: 201

Спасибо сказали: 0 раз(а)




Репутация:   0  


я видел тот пример, но не до конца понимаю, как он может помочь в моем случае((
Вы не могли бы подсказать, как устанавливать эти id-шники при сохранении айтемов в файле? и что же у меня в конечном счете будет содержать сцена, исключительно экземпляры QGraphicsSvgItem?
Собственно, появляется вопрос, можно ли устанавливать этот id для нового QGraphicsSvgItem, а потом QSvgGenerator его сохранит в файл?
и не совсем понятно, в какой именно момент происходит загрузка отфильтрованных данных в итем...можно ли после
red->setElementId(QLatin1String("red_joker"));
вызывать сразу QGraphicsScene::addItem и он сразу корректно отобразится на привязанном QGraphicsView?

Сообщение отредактировал Radagast - 14.6.2008, 13:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.9.2020, 18:21