我正在使用QSplashScreen为QtQuick 2应用程序显示启动屏幕。我使用的图像质量不错(838 X 500)。它可以在某些屏幕分辨率下正确显示。但是对于其他一些分辨率,例如2K分辨率,似乎应用了一些低质量的转换。
已经尝试过Qt :: SmoothTransformation
将笔记本电脑连接到显示器(我有2K显示器)并在显示管理中选择“重复显示”选项,会产生低质量的图像。选择“仅第二屏”可产生高质量的图像。
QPixmap pixmap(qApp->applicationDirPath()+"/splash.png");
QSplashScreen splash(pixmap.scaledToWidth(screen_width*0.35,Qt::SmoothTransformation));
splash.show();
有没有显示图像而不降低画质的方法? 我在QML中也遇到了与“图片”相同的问题。
答案 0 :(得分:0)
如果Qt试图在较高分辨率的显示器上以相同的“物理”尺寸渲染图像,则它将别无选择,只能放大图像。您应该提供更高分辨率的图像:
https://doc.qt.io/qt-5/scalability.html#loading-files-depending-on-platform
目标平台可能会自动加载替代项 以各种方式用于不同显示密度的资源。在iOS上, @ 2x文件名后缀用于指示图像的高DPI版本。 图像QML类型和QIcon类自动加载@ 2x版本 图像和图标(如果提供)。 QImage和QPixmap 类自动设置@ 2x版本的devicePixelRatio 图片到2,但您需要添加代码以实际使用@ 2x 版本:
if ( QGuiApplication::primaryScreen()->devicePixelRatio() >= 2 ) { imageVariant = "@2x"; } else { imageVariant = ""; }
忘记有关iOS的部分-我认为它已经过时了,因为它已经在所有平台上应用了一段时间。
因此,在您的情况下,应添加一个splash@2x.png,它是splash.png的分辨率(和细节)的两倍。如果您仅使用QPixmap,则需要添加上面的代码以确保选择了正确的图像变体。如果您使用的是QML的图片类型,它将自动选择它。