QSvgRenderer使用的是较旧版本的SVG

派珀2200s

我正在使用QSvgRenderer类在Qt中渲染SVG。我能够为SVG设置动画,但只能使用旧版SVG的属性。

我正在尝试使用最新版本的SVG动画使B1和B2笔划字段闪烁,但是仅不推荐使用的animateColor有效。

以下是我同时使用以下两个版本的动画属性的svg的片段:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
              "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
     width="1.24444in" height="1.54444in"
     viewBox="0 0 112 139">
  <path id="B1"
        fill="blue" stroke="none" stroke-width="3"
        d="M 17.08,8.91
           C 21.91,7.93 26.02,8.14 29.87,11.65
             37.10,18.27 34.53,30.65 25.08,33.61
             9.80,38.40 0.02,16.14 17.08,8.91 Z">
    <animateColor
                attributeName="stroke"
        from="red"
                to="white"
                dur="0.5s"
                repeatCount="indefinite"
                />
  </path>
  <path id="B2"
        fill="blue" stroke="none" stroke-width="3"
        d="M 51.19,9.17
           C 56.02,8.19 60.14,8.40 63.98,11.91
             71.21,18.53 68.65,30.91 59.19,33.87
             43.91,38.66 34.13,16.40 51.19,9.17 Z">
        <animate
             attributeType="XML"
             attributeName="fill"
             values="red;white"
             calcmode="discrete"
             dur="0.5s"
             repeatCount="indefinite" />
  </path>
</svg>

当我在Qt的图像查看器中打开图像时,我仅看到B1的笔画闪烁。但是,当我打开Chrome中的SVG时,我只会看到B2的笔触动画。这仅仅是Qt使用SVG库的产物吗?还是我的机器上需要更新一个软件包?

操作系统:Debian 10 Qt Creator:V4.14.0 Qt:5.15.2

永乐

正如文档所指出的:

可伸缩矢量图形(SVG)是一种用于描述XML中的二维图形和图形应用程序的语言。SVG 1.1是W3C建议书,构成了Qt当前SVG开发的核心。SVG 1.2是SVG工作组当前正在开发的规范,并且以草稿形式提供。移动SVG配置文件(SVG Basic和SVG Tiny)针对资源受限的设备,并且是用于第三代移动电话的3GPP平台的一部分。您可以在About SVG上了解有关SVG的更多信息。

Qt支持SVG 1.2 Tiny的静态功能目前不支持ECMA脚本和DOM操作。
...

也就是说,它支持简约的SVG标准。

一种解决方法是使用QWebEngineView(或WebEngineView在QML中)使用铬作为工具来呈现与Google-Chrome相同的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用较旧版本的Android 4.3来检测信标

来自分类Dev

Heroku使用较旧版本的package.json构建

来自分类Dev

使用较旧版本的Android 4.3来检测信标

来自分类Dev

如果我有较新版本,如何强制使用较旧版本的 g++?

来自分类Dev

如何安装较旧版本的Typescript?

来自分类Dev

如何安装较旧版本的Jekyll?

来自分类Dev

laravel较旧版本的新命令

来自分类Dev

如何在较新版本的Ubuntu中使用旧版本的Unity?

来自分类Dev

如何在较新版本的Ubuntu中使用旧版本的Unity?

来自分类Dev

软件取决于软件包的较旧版本,而不是MINT 18所使用的

来自分类Dev

在服务器上签出较旧版本的SVN

来自分类Dev

如何列出所有较旧版本的Grails插件?

来自分类Dev

如何安装Yeoman Generator的较旧版本(还原)?

来自分类Dev

Android ToggleButton在较旧版本上是否清晰?

来自分类Dev

在服务器上签出较旧版本的SVN

来自分类Dev

如何为TortoiseHG安装较旧版本的Mercurial?

来自分类Dev

在哪里可以找到较旧版本的chrome?

来自分类Dev

git存储库的较旧版本作为子模块

来自分类Dev

git flow如何处理较旧版本的修补程序或较旧版本的点发布

来自分类Dev

如果我有较新版本的g ++,该如何强制使用旧版本的g ++?

来自分类Dev

如何迁移到较新的Python版本并仍然使用旧版本中的软件包?

来自分类Dev

较新版本的依赖项会覆盖Maven项目中的较旧版本吗?

来自分类Dev

使用旧版本的jHipster

来自分类Dev

如何使用TortoiseSVN签出旧版本

来自分类Dev

使用useRef与旧版本的react组件?

来自分类Dev

使用Composer安装旧版本的Laravel

来自分类Dev

旧版本的Java使用JXLS

来自分类Dev

允许使用旧版本的python

来自分类Dev

使用git维护旧版本

Related 相关文章

  1. 1

    使用较旧版本的Android 4.3来检测信标

  2. 2

    Heroku使用较旧版本的package.json构建

  3. 3

    使用较旧版本的Android 4.3来检测信标

  4. 4

    如果我有较新版本,如何强制使用较旧版本的 g++?

  5. 5

    如何安装较旧版本的Typescript?

  6. 6

    如何安装较旧版本的Jekyll?

  7. 7

    laravel较旧版本的新命令

  8. 8

    如何在较新版本的Ubuntu中使用旧版本的Unity?

  9. 9

    如何在较新版本的Ubuntu中使用旧版本的Unity?

  10. 10

    软件取决于软件包的较旧版本,而不是MINT 18所使用的

  11. 11

    在服务器上签出较旧版本的SVN

  12. 12

    如何列出所有较旧版本的Grails插件?

  13. 13

    如何安装Yeoman Generator的较旧版本(还原)?

  14. 14

    Android ToggleButton在较旧版本上是否清晰?

  15. 15

    在服务器上签出较旧版本的SVN

  16. 16

    如何为TortoiseHG安装较旧版本的Mercurial?

  17. 17

    在哪里可以找到较旧版本的chrome?

  18. 18

    git存储库的较旧版本作为子模块

  19. 19

    git flow如何处理较旧版本的修补程序或较旧版本的点发布

  20. 20

    如果我有较新版本的g ++,该如何强制使用旧版本的g ++?

  21. 21

    如何迁移到较新的Python版本并仍然使用旧版本中的软件包?

  22. 22

    较新版本的依赖项会覆盖Maven项目中的较旧版本吗?

  23. 23

    使用旧版本的jHipster

  24. 24

    如何使用TortoiseSVN签出旧版本

  25. 25

    使用useRef与旧版本的react组件?

  26. 26

    使用Composer安装旧版本的Laravel

  27. 27

    旧版本的Java使用JXLS

  28. 28

    允许使用旧版本的python

  29. 29

    使用git维护旧版本

热门标签

归档