このページでは

QSplashScreen Class

QSplashScreen ウィジェットは、アプリケーションの起動中に表示できるスプラッシュスクリーンを提供します。詳細...

ヘッダー: #include <QSplashScreen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QWidget

パブリック関数

QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QSplashScreen()
void finish(QWidget *mainWin)
QString message() const
const QPixmap pixmap() const
void repaint()
void setPixmap(const QPixmap &pixmap)

パブリックスロット

void clearMessage()
void showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)

シグナル

void messageChanged(const QString &message)

プロテクトされた関数

virtual void drawContents(QPainter *painter)

再実装された保護関数

virtual bool event(QEvent *e) override
virtual void mousePressEvent(QMouseEvent *) override

詳細な説明

スプラッシュスクリーンとは、通常、アプリケーションの起動時に表示されるウィジェットです。スプラッシュスクリーンは、起動に時間がかかるアプリケーション(例えば、接続の確立に時間がかかるデータベースやネットワークアプリケーションなど)で、アプリケーションが読み込まれていることをユーザーに知らせるために頻繁に使用されます。

スプラッシュスクリーンは画面の中央に表示されます。デスクトップ上の他のすべてのウィンドウよりも上に表示させたい場合は、スプラッシュウィジェットのウィンドウフラグにQt::WindowStaysOnTopHint を追加すると便利です。

一部の X11 ウィンドウマネージャは、「最前面表示」フラグをサポートしていません。その解決策として、スプラッシュ画面上で定期的に `raise()` を呼び出すタイマーを設定し、「最前面表示」効果をシミュレートする方法があります。

最も一般的な使用法は、メインウィジェットが画面に表示される前にスプラッシュスクリーンを表示することです。これは、アプリケーションのメインウィンドウが表示される前にスプラッシュスクリーンを表示し、いくつかの初期化処理を行う以下のコードスニペットで示されています。

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap(":/splash.png");
    QSplashScreen splash(pixmap);
    splash.show();
    app.processEvents();
    //...
    QMainWindow window;
    window.show();
    splash.finish(&window);
    return app.exec();
}

ユーザーは、マウスでスプラッシュスクリーンをクリックすることで、それを非表示にできます。マウス操作を有効にするには、起動中に定期的に `QApplication::processEvents()` を呼び出してください。

アプリケーションの起動時に、接続の確立やモジュールの読み込み完了などを通知するメッセージでスプラッシュスクリーンを更新すると便利な場合があります:

QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSplashScreen(pixmap);
splash->show();

... // Loading some items
splash->showMessage("Loaded modules");

QCoreApplication::processEvents();

... // Establishing connections
splash->showMessage("Established connections");

QCoreApplication::processEvents();

QSplashScreenは、showMessage()関数によってこれをサポートしています。独自に描画を行いたい場合は、pixmap()を使用して、スプラッシュスクリーンで使用されているピクマップへのポインタを取得できます。あるいは、QSplashScreenをサブクラス化し、drawContents()を再実装することも可能です。

複数の画面がある場合、プライマリ画面とは異なる画面にスプラッシュスクリーンを表示することも可能です。例えば:

QScreen *screen = QGuiApplication::screens().at(1);
QPixmap pixmap(":/splash.png");
QSplashScreen splash(screen, pixmap);
splash.show();

メンバ関数のドキュメント

[explicit] QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

pixmap が表示されるスプラッシュスクリーンを作成してください。

ウィジェットのフラグ `f` を設定する必要はありませんが、`Qt::WindowStaysOnTopHint` については設定する必要があるかもしれません。

QSplashScreen::QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

この関数を使用すると、スプラッシュスクリーンの表示画面を指定することができます。このコンストラクタの一般的な用途は、複数の画面があり、メイン画面とは別の画面にスプラッシュスクリーンを表示させたい場合です。その場合は、適切なscreen を渡してください。

これはオーバーロードされた関数です。

[virtual noexcept] QSplashScreen::~QSplashScreen()

デストラクタ。

[slot] void QSplashScreen::clearMessage()

スプラッシュ画面に表示されているメッセージを非表示にします

showMessage()も参照してください 。

[virtual protected] void QSplashScreen::drawContents(QPainter *painter)

スプラッシュ画面の内容は、painter を使用して描画します。デフォルトの実装では、showMessage() から渡されたメッセージが描画されます。スプラッシュ画面上で独自の描画を行いたい場合は、この関数を再実装してください。

[override virtual protected] bool QSplashScreen::event(QEvent *e)

QWidget::event(QEvent *event) を再実装します。

void QSplashScreen::finish(QWidget *mainWin)

スプラッシュ画面が、ウィジェット `mainWin ` が表示されるまで待機し、その後、自身に対して `close()` を呼び出すようにします。

QString QSplashScreen::message() const

スプラッシュ画面に現在表示されているメッセージを返します。

showMessage() およびclearMessage()も参照してください 。

[signal] void QSplashScreen::messageChanged(const QString &message)

このシグナルは、スプラッシュ画面のメッセージが変更されたときに発火します。message は新しいメッセージであり、メッセージが削除された場合は空文字列となります。

showMessage() およびclearMessage()も参照してください 。

[override virtual protected] void QSplashScreen::mousePressEvent(QMouseEvent *)

QWidget::mousePressEvent(QMouseEvent *event) を再実装しています。

const QPixmap QSplashScreen::pixmap() const

スプラッシュ画面で使用されるピクマップを返します。この画像には、showMessage() の呼び出しによって描画されたテキストは一切含まれていません。

setPixmap()も参照してください 。

void QSplashScreen::repaint()

これはQWidget::repaint()を上書きします。標準のrepaint関数とは異なり、イベントループが存在しない場合でも更新内容が確実に表示されるよう、QCoreApplication::processEvents()も呼び出します。

void QSplashScreen::setPixmap(const QPixmap &pixmap)

スプラッシュスクリーンの画像として使用するピクマップを `pixmap` に設定します。

pixmap()も参照してください 。

[slot] void QSplashScreen::showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)

「message 」というテキストを、色color でスプラッシュ画面に描画し、alignment のフラグに従ってテキストを配置します。この関数は、スプラッシュ画面が直ちに再描画されるようにrepaint()を呼び出します。その結果、メッセージはアプリケーションの動作(ファイルの読み込みなど)に合わせて常に最新の状態に保たれます。

Qt::Alignment 、clearMessage()、およびmessage()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.