Экран-заставка разрешения экрана Qt - PullRequest
5 голосов
/ 19 ноября 2011

У меня есть изображение заставки, которое я отображаю с помощью splash.showFullScreen (), но оно не изменяется по размеру до разрешения экрана, поэтому оно либо получается мозаичным, либо слишком большим в зависимости от дисплея.Я перепробовал все, что могу придумать, но ничего не работаетЭто может звучать как глупый вопрос, который, вероятно, есть, но я не могу найти ответ, так что если кто-то может просто помочь мне с этим?Если это имеет значение, я использую QPixmap с именем pixmap для заставки.Кстати, я хочу растянуть изображение до разрешения экрана.

Ответы [ 3 ]

8 голосов
/ 19 ноября 2011

Вы должны масштабировать растровое изображение до размера экрана с помощью 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);

(извините, я могуНе проверяйте это, потому что у меня нет среды разработки на этом компьютере ... Я надеюсь, что это правильно.)

2 голосов
/ 19 ноября 2011

Я думаю, вам следует вызвать метод resize() для вашего заставки в соответствии с размером доступной геометрии рабочего стола, которую вы можете получить, используя метод QDesktopWidget::availableGeometry.Функция QApplication::desktop() используется для получения экземпляра QDesktopWidget.slpashScreen.resize(QApplication::desktop()->avaiableGeometry().size());

1 голос
/ 19 ноября 2011

Если вы используете QLabel для отображения изображения, убедитесь, что метка находится в макете, который заставит его заполнить весь родительский виджет, и установите метку для масштабирования его содержимого с помощью setScaledContents(правда) .

...