Qt版本:5.15.15
我正在尝试使用 https://editsvg.online/editor.html 创建一些非常简单的 SVG 文件,然后将它们导入到我的 Qt 项目中以供使用。
我正在创建 6 个非常简单的 SVG,只是“+X”、“+Y”、“+Z”、“-X”、“-Y”和“-Z”的符号。
在编辑器中,当在浏览器中查看最终产品时,它看起来不错!但一旦导入到 QRC 中,它就会被平滑/圆化并丢失很多细节。
查看 QRC 文件时都会显示:
在最终节目中查看时:
有什么方法可以配置/告诉 Qt 在使用 SVG 时使用更高分辨率吗?
这是一个 SVG 示例,用于“-Z”:
<?xml version="1.0"?>
<svg width="24.000000000000004" height="24.000000000000004" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<!-- Created with SVG-edit - https://github.com/SVG-Edit/svgedit-->
<title>minus_z</title>
<g class="layer">
<title>Layer 1</title>
<text fill="#000000" font-family="Serif" font-size="24" id="svg_2" stroke="#000000" stroke-dasharray="null" stroke-linecap="null" stroke-linejoin="null" stroke-opacity="null" stroke-width="0" style="cursor: move;" text-anchor="middle" transform="matrix(0.840809, 0, 0, 0.894209, 10.2146, 12.059)" x="2.16" xml:space="preserve" y="8.04">-Z</text>
</g>
</svg>
这是它在浏览器中的样子:
正如评论所说,真正的问题是这实际上是文本而不是 SVG - 因此为了让它看起来相同,我们需要确保将首选字体加载到 QT 中。
这是我所做的更改的总和:
1:从 SVG 中删除所有“笔划”条目
2:向源目录添加新的首选字体,我选择“FreeSerif”,但任何都可以。我还将它添加到 QRC 文件中,但我不确定是否需要。
3:在新字体的路径上调用
int QFontDatabase::addApplicationFont(const QString &fileName)
。
4:如果路径输入正确,返回值将不是-1。 (我个人必须执行构建后步骤将字体复制到构建文件夹,但这可能不适用于所有人)
5:暂时添加一行,将该 ID 传递给
QStringList QFontDatabase::applicationFontFamilies(int id)
。这将给出新添加的字体的字体系列。一旦你把它写在某处,你就可以删除这一行。
6:打开 SVG 并编辑“font-family”标签以匹配 applicationFontFamilies() 的返回。
7:完成!