看起来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进行着色吗?
答案 0 :(得分:1)
我的解决方案是将SVG加载为QImage ...但是,我发现图像是以某种默认大小(非常小)加载的。当我调用QImage :: scaleToHeight时,它将它缩放为光栅图像,而不是矢量(因此,存在像素化等)。
所以现在我想弄清楚如何在将SVG加载为QImage时指定大小。如果我找到解决方案,我会报告......
答案 1 :(得分:0)
我有类似的问题,但是来自Qt的另一部分..我正在使用QAction在QToolBar上创建一个按钮。当我将QAction的图标设置为SVG资源时,我最终得到一个像素化的图像。
我正在运行一个视网膜显示机器,尝试放大我的svg坐标,并改变我的显示器dpi,但两者都不起作用。
我得出结论,Qt隐式地将矢量图像转换为QToolBar QAction图标的光栅图像。我不知道这对你有没有帮助,但我还是值得一提。