使用QtStyleSheet的高DPI图像

maj*_*ajk 6 qt qwidget hdpi qtstylesheets

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

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
Run Code Online (Sandbox Code Playgroud)

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

说我们有:

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

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

正如所料,简单地以更高分辨率提供图像的简单方法不起作用 - 它使图像和控制的两倍大(在低和高DPI屏幕上).

关于QImageReader的Qt文档说明了这一点

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

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

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