Qt 屏幕分辨率启动画面

5

我有一张启动屏幕图片,使用splash.showFullScreen()来显示,但是它没有调整到屏幕分辨率大小,所以无论在哪个显示器上都会出现平铺或者过大的情况。我已经尝试了我能想到的所有方法,但是都没有效果。这可能听起来像一个愚蠢的问题,但我找不到答案,所以如果有人能帮我解决这个问题就好了。如果有区别的话,我使用了一个QPixmap命名的pixmap作为启动图片。顺便说一下,我想让这张图片被拉伸到屏幕分辨率。


你能提供一些示例图片吗?原始图像和正在显示的图像都可以吗?您想保持图像的纵横比吗?还是希望将其拉伸到窗口大小? - karlphillip
只要不平铺或超出屏幕,我不在意它是否被拉伸。 - Gerharddc
3个回答

8
您应该使用QPixmap::scaled()将pixmap缩放到屏幕大小。您可以通过调用QDesktopWidget::screenGeometry()来获取屏幕分辨率。桌面小部件可以通过QApplication::desktop()获取。

您可以尝试以下内容:

QDesktopWidget* desktopWidget = qApp->desktop();
QRect screenGeometry = desktopWidget->screenGeometry();
int screenWidth = screenGeometry.width();
int screenHeight = screenGeometry.height();
QPixmap pixmapForSplash = yourPixmap.scaled(screenWidth, screenHeight);
QSplashScreen splashScreen(pixmapForSplash);

对不起,我无法检查这个,因为我在这台电脑上没有开发环境...希望它是正确的。


这听起来不错,您能否详细解释一下如何使用它,以便像我这样的蠢货也能理解? - Gerharddc
不需要查询桌面屏幕的几何信息。使用showFullScreen()显示QSplashScreen已经将QSplashScreen小部件的大小设置为屏幕大小。 - Arnold Spence

2
我认为你应该使用QDesktopWidget::availableGeometry方法获取可用桌面大小,并按其大小调用 resize() 方法来设置闪屏窗口的大小。可以使用 QApplication::desktop()函数获取 QDesktopWidget 的实例。 slpashScreen.resize(QApplication::desktop()->avaiableGeometry().size());

不需要查询桌面屏幕的几何信息。使用showFullScreen()显示QSplashScreen已经将QSplashScreen小部件的大小设置为屏幕大小。 - Arnold Spence
它应该是 pixmap.scaled(QApplication::desktop()->avaiableGeometry().size()) 才能正常工作。 - Gerharddc
调整大小并不总是有效的,实际上这取决于您的显示管理器。如果您使用的是受限的Linux桌面环境,则resize无法达到预期效果,在这种情况下,可以使用QDesktopWidget::availableGeometry - Tejendra

1
如果您使用QLabel来显示图像,请确保标签位于一个布局中,使其填充整个父部件,并设置标签使用setScaledContents(true)缩放其内容。

我使用QSplashScreen,你能帮我吗? - Gerharddc
2
我从未使用过QSplashScreen,但它似乎具有一些方便的功能,用于典型的启动屏幕行为。不过,它仍然是一个QWidget,所以我建议只需添加一个布局,并在其中添加一个QLabel。然后设置标签中的像素图,并将标签设置为缩放其内容。 - Arnold Spence

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接