如何在高 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)
从 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)