6

我有一个使用 Qt styleSheet 的 Qt Widgets 应用程序外观和感觉。我们希望添加对高 DPI 显示器的支持,因为在这些显示器上,应用程序看起来非常小。因此,第一步是调用:

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

这完成了大部分工作,并且应用程序窗口足够大。唯一剩下的问题是样式表中使用的图像的分辨率。

假设我们有:

QCheckBox::indicator::unchecked {
    image: url(:/res/checkbox_off.png);
}
MainWindow QFrame {
    background-image: url(:/res/background.png);
}

当使用高 DPI 缩放时,这些图像会相应地放大,这是一个问题。对于高 DPI,我更喜欢使用更高分辨率的图像,以使它们看起来尽可能清晰。

正如预期的那样,简单地以更高分辨率提供图像的天真方法是行不通的——它使图像和控件变大两倍(在低 DPI 和高 DPI 屏幕上)。

QImageReader 上的 Qt 文档指出

高分辨率版本由基本名称上的后缀 @2x 标记。读取的图像将其设备像素比设置为值 2。

但是,我已经为这些资源提供了两倍的分辨率,将它们添加到 qrc 文件中,但是在 pixel_ratio 为 3 的设备上显示的图像仍然相同。

是否需要任何其他步骤才能使这种自动图像加载与样式表一起使用?

4

0 回答 0