6.1.3 ウィンドウの組み立て


gtk_box_pack_start vbox, btn2, TRUE, TRUE, 0
gtk_box_pack_start vbox, btn3, TRUE, TRUE, 0
gtk_box_pack_start hbox, btn1, TRUE, TRUE, 0
gtk_box_pack_start hbox, vbox, TRUE, TRUE, 0
gtk_container_add win, hbox

 メインウィンドウ(トップレベルウィンドウ)に、その他ウィジェットを配置する処理です。

 gtk_box_pack_start関数は、GtkBox上に他のウィジェットを1つ追加するための関数の1つです。ここでは、GtkHBoxに対して実行しているので、配置済みのウィジェットの右側に配置されます。

 引数には、まず、「GtkBox」、「それに載せるウィジェット」、の順でインスタンスを指定します。

 次の3つ目の引数は、追加するウィジェットの配置用スペースを、可能な限り大きく確保するかどうかを表します。

詳しく説明すると、例えば、GtkBoxを載せたウィンドウのサイズが大きめに設定されているなどの理由で、GtkBoxに載せたウィジェットを必要最低限のサイズで表示するとGtkBox上のスペースが余る場合があります。

この時、gtk_box_pack_start関数の3つ目の引数にTRUE(C言語で真になる値)を指定すると、この余ったスペースが、2つ目の引数に指定したウィジェットの配置用スペースに追加されます。TRUEを指定されたウィジェットが複数ある場合には、余ったスペースを均等に分割した上で、それぞれのウィジェットの配置用スペースに追加します。

 4つ目の引数には、3つ目の引数と同様に真偽値を渡しますが、3つ目の引数にTRUEを指定した場合にしか意味を持ちません。

ここにTRUEを指定すると、3つ目の引数をTRUEにした時に追加されたスペースいっぱいまで、2つ目の引数に指定したウィジェットが拡大されて配置されます。

一方、FALSE(C言語で偽になる値)を指定すると、ウィジェットは拡大されず、追加されたスペースがウィジェットの周りの余白として表示されます。

 以上で説明したgtk_box_pack_start関数の動作を確認できるデモプログラムとして、https://github.com/kitachro/hsp-gtk/tree/master/demoにて、hbox_pack.hspという名前のスクリプトを公開しています。

 gtk_container_add関数については、3.2.4で説明しました。

Prev - Table of contents - Next