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

提供:MochiuWiki : SUSE, EC, PCB
2024年10月14日 (月) 11:01時点におけるWiki (トーク | 投稿記録)による版 (文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

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


サンプルコード

スプラッシュ画面で使用する画像は、透過をサポートしている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();