5

私はsplash.showFullScreen()で表示するスプラッシュ画面の画像を持っていますが、画面の解像度に合わせてサイズが変更されないため、表示に応じてタイル状または大きくなります。私は考えられるすべてを試しましたが、何も機能しません。これはおそらくばかげた質問のように聞こえるかもしれませんが、私は答えを見つけることができないので、もしあればこれで私を助けることができますか?違いが生じる場合は、スプラッシュイメージにpixmapという名前のQPixmapを使用します。ちなみに、画像を画面解像度まで伸ばしてほしいです。

4

3 に答える 3

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);

(申し訳ありませんが、当方のパソコンには開発環境が無いため確認できませんが・・・正しいといいのですが。)

于 2011-11-19T08:12:18.310 に答える
2

resize()メソッドを使用して取得できる使用可能なデスクトップ ジオメトリのサイズによって、スプラッシュ スクリーンのメソッドを呼び出す必要があると思いますQDesktopWidget::availableGeometry。このQApplication::desktop()関数は、 のインスタンスを取得するために使用されますQDesktopWidgetslpashScreen.resize(QApplication::desktop()->avaiableGeometry().size());

于 2011-11-19T08:22:08.603 に答える
1

QLabelを使用して画像を表示する場合は、ラベルが親ウィジェット全体を塗りつぶすレイアウトになっていることを確認し、setScaledContents(true)を使用して内容をスケーリングするようにラベルを設定します。

于 2011-11-19T08:06:10.707 に答える