Как открыть файл svg в QT (QGraphicsView)

Как открыть файл svg, например файл png. Например, это работает для файла png:

scene=new QGraphicsScene(QRect(10, 10, 680, 520));  
view=new QGraphicsView(this);
image=new QGraphicsPixmapItem(QPixmap("example.png"));

scene ->addItem(image);   
view ->setScene(scene);   
view ->setGeometry(QRect(270, 35, 700, 540));

Любые идеи?


person Community    schedule 13.01.2014    source источник
comment
Не могли бы вы уточнить? Как это не работает для файлов SVG?   -  person Some programmer dude    schedule 13.01.2014
comment
Когда я пытаюсь сделать это с файлом svg (example2.svg вместо example.png), он показывает мне белую сцену, а не мое изображение example2.svg. С example.png это работает.   -  person    schedule 13.01.2014
comment
Дублирующий вопрос. Я только что искал QPixmap SVG и нашел это в первой подсказке. См. stackoverflow.com/questions/10079011/qpixmap-and-svg.   -  person Gabriel C. Stabel    schedule 13.01.2014
comment
Да. Я хотел попробовать это, но у меня была другая проблема с модулем qtsvg   -  person    schedule 13.01.2014


Ответы (1)


Согласно моему комментарию, вы можете использовать QGraphicsSvgItem согласно документации :

QGraphicsSvgItem::QGraphicsSvgItem(const QString и имя файла, QGraphicsItem * parent = 0)

Создает новый элемент с заданным родителем и загружает содержимое файла SVG с указанным именем файла.

Итак, вы бы в основном написали что-то вроде следующего:

 QGraphicsSvgItem *item = new QGraphicsSvgItem("example.svg");

Вы также можете следовать примеру из документации, если хотите использовать его с QSvgRenderer.

QSvgRenderer *renderer = new QSvgRenderer(QStringLiteral("example.svg"));
QGraphicsSvgItem *item = new QGraphicsSvgItem();

item->setSharedRenderer(renderer);
item->setElementId(QStringLiteral("example"));

Здесь вы даже можете найти более сложный пример этого:

Пример средства просмотра SVG

person lpapp    schedule 13.01.2014
comment
Это странно. Я делаю, как вы написали, но я получил: Не могу прочитать файл «example.svg», потому что: (строка 2). Когда файл не существует, он показывает: Невозможно прочитать файл «example.svg», потому что: Нет такого файла или каталога - person ; 14.01.2014
comment
@ user3191398: вы можете открыть example.svg с помощью программы просмотра svn, такой как inkscape или karbon, просто чтобы проверить, действителен ли сам svg? - person lpapp; 14.01.2014
comment
Я могу открыть. Это действительно - person ; 14.01.2014
comment
Возможно, средство просмотра svg исправляет исправимую ошибку. Пожалуйста, загрузите svg куда-нибудь и предоставьте нам ссылку. На всякий случай попробуйте другие файлы svg. - person lpapp; 14.01.2014
comment
@ user3191398: как уже отмечалось, html следует изменить вверху на xml, чтобы он работал. Возможно, есть явный способ заставить его работать, но, по крайней мере, это должно вас заставить. - person lpapp; 14.01.2014
comment
Я изменил html на xml, и это не работает. Когда я удаляю ‹xml› и ‹body›, все работает. Большое спасибо. - person ; 14.01.2014