Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: hemmul от Март 27, 2012, 10:15



Название: svg item некорректно инициализируется
Отправлено: hemmul от Март 27, 2012, 10:15
Добавляю на 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)