首页 > 解决方案 > svg 图标在高 DPI 上出现像素化

问题描述

我的一些 SVG 图标在缩放显示器 (Win10) 或使用高 DPI 显示器(Win10、Linux、Mac)时无法正确缩放。这适用于分配给 QAction 并由 QMenu 条目或 QToolButtons 显示的图标,以及分配给 QDockWidgets 的图标,如所附屏幕截图的上部所示。

下半部分的图标在派生的paintEvent(..)中绘制并完美渲染。

像素化动作图标

使用选项QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);系统接缝在像素图上使用一些缩放启发式方法,因此图标变得有点前卫:

前卫的动作图标

有什么方法可以让 qt 在 SVG 基础上重绘图标而不需要派生所有图标显示类?

真诚的 JJ

标签: c++qticons

解决方案


我也遇到了 SVG 图标的问题。对我来说,这是由 SVG 文件和我试图渲染的文件之间的纵横比差异引起的。我尝试渲染为正方形,但我的 SVG 文件不是正方形。在 SVG 文件中设置正方形尺寸修复了它。


推荐阅读