Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: svg item некорректно инициализируется
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
hemmul
Добавляю на QGraphicScene объекты boundingRect() которых


QRectF(257.5,457.5 176x304)
QRectF(374.5,388.5 191x161)
QRectF(258.5,226.5 213x125)
QRectF(165.023,103.023 160.954x72.9535)

Сохраняю объекты в SVG файл:
  QSvgGenerator gen;
    gen.setSize(QSize(MyScene->width(), MyScene->height()));
    gen.setViewBox(MyScene->sceneRect());
    gen.setFileName(fileName);
    QPainter pgen (&gen);
    for(int i = 0; i < MyScene->items().size(); i++)
     { qDebug() << MyScene->items()[i]->boundingRect();} // таким образом для отладки публикую внешние границы
    MyView->render(&pgen,MyScene->sceneRect(),
                   QRect(   MyScene->sceneRect().left(),  MyScene->sceneRect().top(),  MyScene->width(), MyScene->height()   )
                   );


Объекты сохраняются корректно. Проверил сверив координаты линии на сцене с сохраненными координатами в файле.

Дальше открываю файл, выдираю каждый элемент сохраняю его во временный файл, которым инициализирую QGraphicsSvgItem, и добавляю полученный элемент на сцену. Вот содержимое файлов которыми инициализируется QGraphicsSvgItem
ФАЙЛ 1.
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<polyline fill="none" points="167,105 324,174 " vector-effect="none"/>
</g>


ФАЙЛ 2.
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M260,228 L470,228 L470,350 L260,350 L260,228"/>
</g>

ФАЙЛ 3
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M564,469 C564,512.63 521.915,548 470,548 C418.085,548 376,512.63 376,469 C376,425.37 418.085,390 470,390 C521.915,390 564,425.37 564,469 "/>
</g>

ФАЙЛ 4
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M259,459 L432,459 L432,760 L259,760 L259,459"/>


Собственно проблема:
В результате вижу что все элементы открытого файла сбились в кучу в начале координат сцены, их boundingRect() :

QRectF(0,0 161x73)
QRectF(0,0 213x125)
QRectF(0,0 191x161)
QRectF(0,0 176x304)

hemmul
Данная тема была открыта при выполнении тестового задания в одну замечательную фирму, по результатам выполнения тестового задания и в ходе общения с программистами которые оценивали мою работу выяснилось что модуль QtSVG использовать не целесообразно, из за его общей кривизны. Максимум что целесообразно с помощью него можно делать - это использовать просмотр SVG картинок, для построения же полноценного редактора был использован модуль QtXml.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.