You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过QSvgRenderer获取SVG的width与height属性值(非XML解析)

获取SVG根元素的width和height属性(无需手动解析XML)

好消息是,你完全不用手动解析XML就能拿到这些属性值——Qt的QSvgRenderer虽然没有直接提供获取width/height的接口,但可以通过它暴露的DOM文档对象来轻松获取:

  • 第一步:通过QSvgRenderer::svgDocument()拿到SVG的DOM文档对象QDomDocument
  • 第二步:调用documentElement()获取SVG的根节点<svg>
  • 第三步:用attribute()方法直接读取根节点的widthheight属性,包含完整单位(比如300mm600mm

代码示例

QSvgRenderer renderer;
// 加载SVG文件或者SVG原始数据
renderer.load("path/to/your/file.svg");

if (renderer.isValid()) {
    QDomDocument svgDoc = renderer.svgDocument();
    QDomElement rootSvg = svgDoc.documentElement();
    
    // 获取带单位的width和height
    QString svgWidth = rootSvg.attribute("width");
    QString svgHeight = rootSvg.attribute("height");
    
    // 输出结果
    qDebug() << "SVG Width:" << svgWidth; // 输出 "300mm"
    qDebug() << "SVG Height:" << svgHeight; // 输出 "600mm"
}

注意事项

  • 如果SVG文件没有指定widthheight属性,attribute()会返回空字符串,建议使用前先判断是否为空
  • 这个方法完全基于Qt的DOM API,不需要手动处理XML解析的细节,既安全又高效

内容的提问来源于stack exchange,提问作者Timmmm

火山引擎 最新活动