2011-11-19 321 views
4

我有一個啓動屏幕圖像,我用splash.showFullScreen()顯示,但它沒有將它的大小調整爲屏幕分辨率,所以它根據顯示屏出現平鋪或大到。我試過了我能想到的所有東西,但沒有任何效果。這可能聽起來像一個愚蠢的問題,它可能是,但我找不到答案,如果有任何可以幫助我這個?如果它有所作爲,我使用一個名爲pixmap的QPixmap作爲飛濺圖像。順便說一下,我希望圖像被拉伸到屏幕分辨率。Qt屏幕分辨率初始屏幕

+0

您能提供樣品圖片嗎?原始圖像和正在顯示的圖像?你想保持圖像的寬高比嗎?或者你希望它被拉伸到窗口的大小? – karlphillip

+0

我不在乎它是否拉伸,只要它不平鋪或在屏幕外 – Gerharddc

回答

8

您應該使用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); 

(對不起,我不能檢查這一點,因爲我沒有這個計算機上的開發環境......我希望這是正確的。 )

+0

這聽起來不錯,你可以更詳細地解釋如何使用它作爲我愚蠢的人嗎? – Gerharddc

+0

不應該有必要查詢桌面屏幕幾何。使用'showFullScreen()'顯示'QSplashScreen'已經將'QSplashScreen'小部件的大小設置爲屏幕大小。 –

1

如果您使用QLabel來顯示圖像,請確保該標籤位於將使其填充整個父窗口小部件的佈局中,並使用setScaledContents(true)設置標籤以縮放其內容。

+0

我使用QSplashScreen,如果你可以請幫助我嗎? – Gerharddc

+2

我從來沒有使用'QSplashScreen',但它看起來像它有一些便利功能的典型閃屏行爲。它仍然是一個'QWidget',但我只是說要添加一個佈局,並添加一個'QLabel'。然後在標籤中設置像素圖並設置標籤以縮放其內容。 –

2

我認爲你應該調用resize()方法爲你的啓動屏幕的可用桌面幾何的大小,你可以使用QDesktopWidget::availableGeometry方法獲得。 QApplication::desktop()函數用於獲取QDesktopWidget的實例。 slpashScreen.resize(QApplication::desktop()->avaiableGeometry().size());

+0

不應該有必要查詢桌面屏幕幾何。使用'showFullScreen()'顯示'QSplashScreen'已經將'QSplashScreen'小部件的大小設置爲屏幕大小。 –

+0

它應該是pixmap.scaled(QApplication :: desktop() - > avaiableGeometry()。size())工作 – Gerharddc

+0

調整大小並不總是有效,實際上它取決於你的顯示管理器,如果你有一個有限的Linux桌面那麼'resize'不能達到目的,在這種情況下'QDesktopWidget :: availableGeometry'工作.. – Tejendra