Qtの応用 - スプラッシュウインドウ

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

スプラッシュウィンドウを表示する手順を記載する。


サンプルコード

スプラッシュ画面で使用する画像は、透過をサポートしているPNG形式が理想的である。

以下の例では、画像の透過をマスクとして非矩形スプラッシュ画面を表示する。
画像ファイルは、<Qtプロジェクトのディレクトリ>/img/splash.pngにあるものとする。

 int main(int argc, char *argv[])
 {
    QApplication app(argc, argv);
  
    // show splash screen.
    QPixmap pxmSplash( ":/img/splash.png" );
    QSplashScreen wndSplash( pxmSplash );
    wndSplash.setMask( pxmSplash.mask() );
    wndSplash.show();
    app.processEvents();
 
    // 表示中、この間にあれこれ起動処理を記述する
 
    MainDialog window;
    window.show();
    wndSplash.finish( &window );
 
    return app.exec();
 }



スプラッシュ画面に進捗を表示

スプラッシュ画面が必要な理由の1つは、起動に時間が掛かるソフトウェアにおいて、ユーザのストレスを軽減するためである。
ただし、スプラッシュ画面のみ表示するだけでなく、ソフトウェアの進捗もスプラッシュ画面に表示する方がよい。

以下の例では、スプラッシュ画面下に進捗状況(文字列)を表示している。

メイン画面のクラスのコンストラクタにスプラッシュ画面のクラスのポインタを渡して、メイン画面から、以下のような進捗状況を表示することが多い。

 wndSplash.showMessage(tr("ソフトウェアの起動中..."), Qt::AlignBottom | Qt::AlignHCenter, Qt::darkGreen);
 qApp->processEvents();