Qt支持在QIcon中着色SVG

时间:2014-08-02 14:40:08

标签: c++ qt svg qt4

看起来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>

我使用QIcon通过Qt的资源加载器将其加载到我的应用程序中:

QIcon icon(":/svgs/fire.svg");

无论SVG属性如何,它都在白色上显示为黑色。当我在Firefox中打开SVG时,颜色很受尊重。 (注意,我还尝试了颜色参数的十六进制值。)

我忽略了什么吗?还有另一种方法可以在Qt中对SVG / QIcons进行着色吗?

2 个答案:

答案 0 :(得分:1)

我的解决方案是将SVG加载为QImage ...但是,我发现图像是以某种默认大小(非常小)加载的。当我调用QImage :: scaleToHeight时,它将它缩放为光栅图像,而不是矢量(因此,存在像素化等)。

所以现在我想弄清楚如何在将SVG加载为QImage时指定大小。如果我找到解决方案,我会报告......

答案 1 :(得分:0)

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

我正在运行一个视网膜显示机器,尝试放大我的svg坐标,并改变我的显示器dpi,但两者都不起作用。

我得出结论,Qt隐式地将矢量图像转换为QToolBar QAction图标的光栅图像。我不知道这对你有没有帮助,但我还是值得一提。