GTKmm (3.0) と glade によるアプリ (10) - プログレスバーと2つのモード
今回は、前回の" GTKmm (3.0) と glade によるアプリ (9) - 子ウィンドウとインターバルタイマー "で作成したプログラムを使って、プログレスバーを2つのモードで表示してみたいと思います。
最終的にこんな感じですね。
ソースコードは最後に両方の機能を含めたものを公開。(zipダウンロードできます)
■ プログレスバーの2つのモード
1) activityモード
バーが左右(または上下)に動き、何らかの処理が行われていることを示します。
完了値が不明な処理などに使います。
例えば、文字列検索など。
2) パーセントモード
バーが伸びる(または縮む)ことにより、処理の進捗割合を示します。
完了値が明確な処理などに使います。
例えば、ファイル転送や圧縮など。
■ 各ソースファイルの修正
1) glade で子ウィンドウをデザイン
・activity表示とパーセント表示を切り替えるためのチェックボタン
・プログレスバー
を設置します。
プログレスバーは、
縦・横表示
左右反転動作
に変更もできます。
パルスステップ数を増減することで、activityモードの時のバーの動きの速さが変わります。
※ 詳細は添付のgladeファイルを確認してください。
2) 子ウィンドウクラス Child_Window の変更 (Child_Window.cc, Child_Window.h)
先に追加したコードから
● Child_Window.h
… protected: Gtk::CheckButton *m_chk_progmode = nullptr; Gtk::ProgressBar *m_progressbar = nullptr; …
● Child_Window.cc
… void Child_Window::setInit_display() { // get widget refBuilder->get_widget("chk_progress_mode", m_chk_progmode); refBuilder->get_widget("progress_bar", m_progressbar); … } … bool Child_Window::on_timeout() { if (m_chk_progmode->get_active()){ m_progressbar->pulse(); } else { double new_val = m_progressbar->get_fraction() + 0.01; if (new_val > 1.0) new_val = 0.0; m_progressbar->set_fraction(new_val); } … }
プログレスバー表示モードの切り替え用のチェックボックスを
Gtk::CheckButton *m_chk_progmode
プログレスバーを
Gtk::ProgressBar *m_progressbar
とします。
チェックボタンは、Gtk::ToggleButtonを継承しているので get_active() を使って、状態を取得します。
get_active() が true はチェック時
get_active() が false は未チェック時
今回、チェックされていれば activityモードとし、未チェックのときは パーセントモードとします。
(2.1) activityモード
プロゲスバーで pulse() をすることで、プログレスバーに動きを促します。
プログレスバーに動きは、
void Gtk::ProgressBar::set_pulse_step ( double fraction ); で動きの大きさを指定するか、
pulse(); を呼び出すタイミングに影響を受けます。
(2.2) パーセントモード
void Gtk::ProgressBar::set_fraction ( double fraction ); で進捗値(%/100)を指定します。
つまり、0.00〜1.00 で指定。
今回はループさせているため、get_fraction(); で現在の進捗値を取得し、1.00 (100%)を超えたら、0.00に戻しています。
以上、簡単でしたね!
ネットを見るとチェックボタンの状態取得は、ちょっとしたマメ知識扱いになっていますが、継承しているクラスを理解していればすぐに分かると思います。
devhelp などを使い、Gtk::CheckButton のクラスリファレンスを開けば、クラスの相関図が表示されているので、そこから追跡すると良いでしょう。
最後に、全てのファイルを圧縮したファイル(zip)を載せます。
●ソース一式
GTKプログラミングを学習するなら!
- 作者: ToshioCP
- 発売日: 2017/06/06
- メディア: Kindle版
- この商品を含むブログを見る
GTK+とGladeで作るLinuxプログラミング超入門―かっこいいアプリを自分で作ろう! (CompuBooks)
- 作者: 鈴木哲哉
- 出版社/メーカー: すばる舎
- 発売日: 2000/06
- メディア: 単行本
- クリック: 25回
- この商品を含むブログ (1件) を見る
GTK+・GDKによるLinuxアプリケーション開発 (New riders)
- 作者: エリックハーロウ,Eric Harlow,アンク
- 出版社/メーカー: 翔泳社
- 発売日: 1999/10/01
- メディア: 単行本
- クリック: 56回
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: Saravana Pugazhendi
- 発売日: 2015/11/16
- メディア: アプリ
- この商品を含むブログを見る