如何在高 DPI 屏幕上的 Qt 5.6 中再次使 svg 图标清晰

How to make svg icons crisp again in Qt 5.6 on high DPI screens

从 Qt 5.4 升级到 Qt 5.6 使我所有的 .svg 图标都变成了 blurry/pixelated。我注意到这种情况只发生在像我的 MacBookPro Retina 显示器这样的高密度屏幕上。我阅读了 High DPI support in Qt 5.6 and I have set the QT_AUTO_SCREEN_SCALE_FACTOR=1 environment variable, but it didn't have much effect. Anybody has this issue? I have also found this 错误报告的文档,它可能与我的问题有关。

编辑 1:

一个简单的例子是:

Image {
  source: my_icon.svg
  sourceSize.width: 50
  sourceSize.height: 50
  anchor.centerIn: parent
}

这是一个丑陋的 hack,但它起到了作用:

Item {
    property alias image: mySvgImage

    implicitWidth: mySvgImage.paintedWidth
    implicitHeight: mySvgImage.implicitHeight / Screen.devicePixelRatio

    Image {
        id: mySvgImage

        sourceSize.width: width * Screen.devicePixelRatio
        sourceSize.height: height * Screen.devicePixelRatio
    }
}

我不确定如何在 QML 中应用它,但您需要使用 QWidgets 设置属性 AA_UseHighDpiPixmaps。可能与 QML 相同。例如:

app.setAttribute(Qt.AA_UseHighDpiPixmaps)