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ウィンドウマネージャは、"stays on top "フラグをサポートしていません。解決策としては、スプラッシュ画面で定期的にraise() を呼び出すタイマーをセットアップして、"stays on top" 効果をシミュレートすることです。

最も一般的な使い方は、メイン・ウィジェットが画面に表示される前にスプラッシュ画面を表示することです。次のコード・スニペットでは、アプリケーションのメイン・ウィンドウが表示される前にスプラッシュ・スクリーンが表示され、いくつかの初期化タスクが実行されます:

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() でスプラッシュ・スクリーンで使用される 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 を表示するスプラッシュ・スクリーンを構築する。

おそらくQt::WindowStaysOnTopHint を除いて、ウィジェット・フラグf を設定する必要はないはずである。

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

スプラッシュ・スクリーンで使用される pixmap を返す。この画像には、showMessage() 呼び出しで描画されたテキストは含まれない。

setPixmap()も参照

void QSplashScreen::repaint()

これはQWidget::repaint() をオーバーライドする。標準の repaint 関数とは異なり、イベント・ループが存在しない場合でも、QCoreApplication::processEvents() を呼び出して更新を確実に表示します。

void QSplashScreen::setPixmap(const QPixmap &pixmap)

スプラッシュ・スクリーンの画像として使われる pixmap をpixmap に設定する。

pixmap()も参照のこと

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

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

Qt::AlignmentclearMessage()、message()も参照の こと。

© 2025 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.