Ответ в теме: QSvgGenerator

      Комментарии к записи Ответ в теме: QSvgGenerator отключены
#3994

Вы говорите, что он не записывает в файл координаты объекта, но ведь как-то он этот объект позиционирует? Или файл, который получается на выходе неправильно отображается?

Я написал следующий пример:
файл svggenerator.pro:

QT += core gui svg widgets

TARGET = svggenerator
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += main.cpp

Файл main.cpp:

#include <QApplication>
#include <QtSvg/QSvgGenerator>
#include <QGraphicsScene>
#include <QPainter>
#include <QGraphicsEllipseItem>

int main(int argc, char *argv[]) {
  QApplication a(argc, argv);
  const QString path = "test.svg";

  QSvgGenerator generator;
  QGraphicsScene scene;
  QGraphicsEllipseItem circle(30, 20, 40, 50);
  QPainter painter;

  scene.addItem(&circle);
  generator.setFileName(path);
  generator.setSize(scene.sceneRect().size().toSize());

  painter.begin(&generator);
  scene.render(&painter);
  painter.end();

  return a.exec();
}

Тут на графической сцене, которая рисуется на QSvgGenerator выводится эллипс. В результате работы программы я получаю файл, который прикрепил к сообщению. На файле изображен тот самый эллипс. Теперь я заглядываю внутрь файла (Вы говорите, что там нет координат объекта):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="70.5556mm" height="70.5556mm"
 viewBox="0 0 200 200"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
<title>SVG Generator Example Drawing</title>
<desc>An SVG drawing created by the SVG Generator Example provided with Qt.</desc>
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="DejaVu Sans" font-size="11" font-weight="400" font-style="normal" 
>
</g>

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(3.92157,0,0,3.92157,-115.686,-76.4706)"
font-family="DejaVu Sans" font-size="11" font-weight="400" font-style="normal" 
>
<ellipse cx="50" cy="45" rx="20" ry="25"/>
</g>

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(3.92157,0,0,3.92157,-115.686,-76.4706)"
font-family="DejaVu Sans" font-size="11" font-weight="400" font-style="normal" 
>
</g>

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="DejaVu Sans" font-size="11" font-weight="400" font-style="normal" 
>
</g>
</g>
</svg>

В этом файле вы можете без труда найти координаты:
<ellipse cx="50" cy="45" rx="20" ry="25"/>

Объясните что я делаю не так :).