Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 从QSVGrender获取SVG大小_Qt_Qt5_Qtsvg - Fatal编程技术网

Qt 从QSVGrender获取SVG大小

Qt 从QSVGrender获取SVG大小,qt,qt5,qtsvg,Qt,Qt5,Qtsvg,假设我有一个类似这样的SVG: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 200" height="600mm" width="300mm"> ...

假设我有一个类似这样的SVG:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   viewBox="0 0 100 200"
   height="600mm"
   width="300mm">
...

...
使用
qsvgrender::viewBoxF()
我可以获得
0 100 200
视图框,但是有没有办法获得
width=“300mm”
height=“600mm”


(除了自己解析XML这件显而易见的事情之外。)

我已经阅读了源代码。看见行为是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   viewBox="0 0 100 200"
   height="600mm"
   width="300mm">
...
qsvgrender::viewBoxF()
以用户定义的单位返回
viewBox
属性

qsvgrender::defaultSize()
读取
width
height
属性(如果存在)。如果单位为
cm
in
mm
它们将乘以适当的值,以获得分辨率为90 DPI的像素。例如,如果中的
,则它将乘以90,
mm
乘以90/25.4,依此类推。其他单位-
px
pt
甚至
%
保持原样
defaultSize()
使用整数,因此其分辨率为1/90英寸

如果
width
height
不存在,则
defaultSize()
以用户定义的单位返回viewBox的大小

这是一种非常特殊和复杂的行为,不适合我的用例,因此我认为我只需解析XML两次(或者至少第一次)