我使用QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
在我的Qt应用程序中启用了高dpi支持,但现在我的图像看起来并不清晰,而是看起来“平滑”了。例如下面有一些按钮的图片,这些按钮意味着使用高dpi图像。当我禁用高dpi支持并手动缩放ui时,使用相同的图像,图标清晰明了。
我试图设置Qt::AA_UseHighDpiPixmaps
没有成功。这是一个示例代码:
import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
ToolButton{
anchors.centerIn: parent
icon.source: "qrc:/ic_star_white_48dp.png"
}
}
我使用的图标来自Google材料设计图标,它是为高dpi屏幕设备制作的(分辨率为192x192)。启用高dpi时,工具按钮中的图标显示为平滑。如果我禁用高dpi支持并将图标(icon.height
和icon.width
)的高度和宽度设置为640/160 * 48
(640
是我的设备的dpi),图标清晰明了。但是,如果我启用高dpi并将高度和宽度设置为48
,则图标不清晰。
我猜Qt的图标属性可以缩放图像以提高性能(例如,ToolButton是48 x 48,源图像将缩放到48 x 48),但不会补偿HighDpiScaling。
例如,您的ToolButton通过HighDpiScaling从48 x 48逻辑像素缩放到192 x 192物理像素,但它仍然使用缩小的48 x 48图像。
我倾向于使用:
ToolButton{
anchors.centerIn: parent
Image {
anchors.centerIn: parent
anchors.margins: 5
//You can play around with those to balance quality and performance
//mipmap: true
//sourceSize.height: height * 2
//sourceSize.width: width * 2
fillMode: Image.PreserveAspectFit
source: "qrc:/image.png"
}
}