Qt支持在QIcon中为SVG着色。

3

看起来Qt不支持SVG中路径标签上的描边/填充选项:

<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
   <path fill="green" stroke="red" d="M2 0c1 2-2 3-2 5s2 3 2 3c-.98-1.98 2-3 2-5s-2-3-2-3zm3 3c1 2-2 3-2 5h3c.4 0 1-.5 1-2 0-2-2-3-2-3z" />
</svg>

我通过Qt的资源加载器,使用QIcon将其加载到我的应用程序中:
QIcon icon(":/svgs/fire.svg");

SVG的属性不影响它在白色背景上的黑色显示。当我在Firefox中打开SVG文件时,颜色得到了正确的展示。(注意,我也尝试过使用16进制值来表示颜色参数)。

我是否忽略了某些内容?在Qt中还有其他着色SVGs/QIcons的方法吗?

2个回答

3
我的解决方法是将SVG作为QImage加载...但是,我发现加载的图像具有某种默认大小(相当小)。当我调用QImage::scaleToHeight时,它会按照栅格图像而不是矢量图像缩放(因此存在像素化等问题)。
所以现在我正在尝试找出如何在加载SVG作为QImage时指定大小。如果我找到解决方案,我会回报...

2

我遇到了类似的问题,但是是在Qt的另一个部分。我正在使用QAction在QToolBar上创建一个按钮。当我将QAction的图标设置为SVG资源时,最终得到的是一个像素化的图像。

我正在运行一台Retina显示屏机器,尝试过缩放我的SVG坐标和更改我的显示dpi,但两者都不起作用。

我得出结论,Qt会将矢量图像隐式转换为位图图像以用于QToolBar QAction图标。我不知道这是否对您有所帮助,但我认为值得一提。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接