2014-01-13 3 views
2

Как открыть файл svg, например, файл png. Например, он работает для PNG-файла:Как открыть файл svg в QT (QGraphicsView)

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)); 

Любые идеи?

+0

Можете ли вы разработать? * Как * он не работает для SVG-файлов? –

+0

Когда я пытаюсь сделать это с svg-файлом (example2.svg вместо example.png), он показывает мне белую сцену, а не изображение example2.svg. С example.png он работает. – user3191398

+0

Duplicate вопрос. Я только что искал «QPixmap SVG» и нашел это в первом подсказке. См. Http://stackoverflow.com/questions/10079011/qpixmap-and-svg –

ответ

2

В соответствии с моим комментарием, вы можете использовать QGraphicsSvgItem согласно documentation:

QGraphicsSvgItem::QGraphicsSvgItem(const QString & fileName, 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 Viewer Example

+0

Это странно. Я делаю то, что вы написали, но я получил: «Не могу прочитать файл example.svg», потому что: (строка 2) ». Когда файл не существует, он показывает: «Не удается прочитать файл example.svg», потому что: Нет такого файла или каталога « – user3191398

+0

@ user3191398: можете ли вы открыть example.svg с помощью svn viewer, например inkscape или karbon, просто чтобы увидеть если svg действительно действует? – lpapp

+0

Я могу открыть. Действительно – user3191398

Смежные вопросы