最近在研究QSvgRenderer解析svg文件。定义的的SVG文件如下:
<?xml version='1.0' encoding='UTF-8'?>
<svg width="800" xmlns="http://www.w3.org/2000/svg" height="600"
xmlns:xlink="http://www.w3.org/1999/xlink" >
<defs>
<g id="shape2" >
<circle cx="0" cy="0" r="25" style="fill:#bf55ec;"/>
</g>
<symbol id="shape1" viewBox="0 0 800 600">
<rect x="50" y="50" width="25" height="50" style="fill:#02ffbb;"/>
</symbol>
<rect x="50" y="50" width="25" height="50" style="fill:#02ffbb;"/>
</symbol>
</defs>
<g id="s1">
<use xlink:href="#shape2" x="100" y="25" />
</g>
<g id="s3">
<use xlink:href="#shape1" x="150" y="25" />
</g>
</svg>
解析代码:
QSvgRenderer *renderer = new QSvgRenderer(fileName);
QGraphicsSvgItem *black = new QGraphicsSvgItem();
black->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
black->setSharedRenderer(renderer);
black->setElementId(QLatin1String("s1"));
black->setPos(100,25);
m_sence->addItem(black);
QGraphicsSvgItem* test2 = new QGraphicsSvgItem();
test2->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
test2->setSharedRenderer(renderer);
test2->setElementId(QLatin1String("s3"));
test2->setPos(150,25);
m_sence->addItem(test2);
问题:
s1是能正常解析出来的,但是s3确解析 不出来。控制台提示:link shape1 hasn't been detected!
在defs中的<g>标签定义的在<use>的时候可以引用到,<symbol>标签定义的,确引用不到!!
各位,有没有高手有解???