Как сказал Павел, QtSvg - это путь, которому я верю. Его проще использовать, но в нашей команде мы столкнулись с проблемами производительности QtSvg, особенно в Linux. Поэтому мы решили напрямую проанализировать XML-файл SVG вручную и отобразить его, используя сам Qt. Это оказалось намного быстрее.
псевдокод: -
// Read the SVG file using XML parser (SAX)
void SvgReader::readFile()
{
QFile file(<some svg filename>);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
qWarning("Cannot open file");
return;
}
QString localName;
QXmlStreamAttributes attributes;
pXml = new QXmlStreamReader(&file);
pXml->setNamespaceProcessing(false);
while (!pXml->atEnd()) {
switch (pXml->readNext()) {
case QXmlStreamReader::StartElement:
localName = pXml->name().toString();
if (localName.compare(<some element path>) == 0) {
attributes = pXml->attributes();
QStringRef data = attributes.value(<some attribute name>);
// parse/use your data;
}
// similarly other case statements
}
}
}