2014-01-13 29 views
2

如何打開像png文件一樣的svg文件。 例如它適用於PNG文件:如何在QT中打開svg文件(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

重複的問題。我剛剛搜索過「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:你可以用svn查看器打開example.svg,就像inkscape或karbon一樣,如果svg本身有效? – lpapp

+0

我可以打開。它是有效的 – user3191398