QSplashScreen Class

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

Header: #include <QSplashScreen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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)

自分自身に対してclose() を呼び出す前に、 ウィジェットmainWin が表示されるまでスプラッシュスクリーンを待たせます。

QString QSplashScreen::message() const

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

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

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

このシグナルは、スプラッシュスクリーンのメッセージが変更されたときに発せられます。message は新しいメッセージで、メッセージが削除されたときは null 文字列です。

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()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。