【问题标题】:Qt Screen Resolution Splash ScreenQt 屏幕分辨率闪屏
【发布时间】:2012-01-01 19:28:22
【问题描述】:

我有一个使用 splash.showFullScreen() 显示的初始屏幕图像,但它不会将其大小调整为屏幕分辨率,因此它要么是平铺的,要么是大的,具体取决于显示器。我已经尝试了我能想到的一切,但没有任何效果。这听起来可能是一个愚蠢的问题,但我找不到答案,所以如果有的话可以帮助我解决这个问题?如果它有所作为,我使用名为 pixmap 的 QPixmap 作为初始图像。顺便说一句,我希望将图像拉伸到屏幕分辨率。

【问题讨论】:

  • 你能提供样品图片吗?原始图像和正在显示的图像?你想保持图像的纵横比吗?或者你希望它被拉伸到窗口的大小?
  • 我不在乎它是否被拉伸,只要它没有平铺或在屏幕之外

标签: c++ qt splash-screen screen-resolution qpixmap


【解决方案1】:

您应该使用QPixmap::scaled() 将像素图缩放到屏幕大小。您可以拨打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);

(对不起,我不能检查这个,因为我在这台电脑上没有开发环境……希望是正确的。)

【讨论】:

  • 这听起来不错,您能否详细解释一下如何将它用于像我这样愚蠢的人?
  • 不必查询桌面屏幕几何形状。使用showFullScreen() 显示QSplashScreen 已经将QSplashScreen 小部件的大小设置为屏幕大小。
【解决方案2】:

我认为您应该根据可用桌面几何图形的大小为您的初始屏幕调用resize() 方法,您可以使用QDesktopWidget::availableGeometry 方法获得。 QApplication::desktop() 函数用于获取QDesktopWidget 的实例。 slpashScreen.resize(QApplication::desktop()->avaiableGeometry().size());

【讨论】:

  • 不必查询桌面屏幕几何形状。使用showFullScreen() 显示QSplashScreen 已经将QSplashScreen 小部件的大小设置为屏幕大小。
  • 应该是 pixmap.scaled(QApplication::desktop()->avaiableGeometry().size()) 才能工作
  • 调整大小并不总是有效,实际上它取决于您的显示管理器,如果您的 linux 桌面环境有限,那么 resize 不能达到目的,在这种情况下 QDesktopWidget::availableGeometry 有效..
【解决方案3】:

如果您使用QLabel 来显示图像,请确保标签的布局会使其​​填充整个父窗口小部件,并使用setScaledContents(true) 设置标签以缩放其内容。

【讨论】:

  • 如果你能帮我解决这个问题,我会使用 QSplashScreen?
  • 我从未使用过QSplashScreen,但它看起来对典型的闪屏行为具有一些便利功能。它仍然是QWidget,所以我想说只是添加一个布局,然后添加一个QLabel。然后在标签中设置像素图,并设置标签来缩放其内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多