GTK   レイアウト

ホーム   C/C++チュートリアル


レイアウト


ウィンドウ

window.c

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new(0); // GTK_WINDOW_TOPLEVELは 0 です
    gtk_window_set_title            (GTK_WINDOW(window), "Window");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
                                /* GTK_WIN_POS_CENTER は 1 です */
    gtk_container_set_border_width  (GTK_CONTAINER(window), 15);
    
    button = gtk_button_new_with_label("Button");
    gtk_container_add(GTK_CONTAINER(window), button);
    
    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    
    gtk_main();
    
    return 0;
}
	

実行結果


GTKでは、macOS のボタンも、縦に拡大します。
ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明


アライン

align.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new         (0);
    gtk_window_set_title            (GTK_WINDOW(window), "Align");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
                                /* GTK_WIN_POS_CENTER は 1 です */
    gtk_container_set_border_width  (GTK_CONTAINER(window), 15);
    
    button = gtk_button_new_with_label("Button");
    gtk_widget_set_size_request     (button, 100, 25);
    gtk_widget_set_halign           (button, GTK_ALIGN_END);
    gtk_widget_set_valign           (button, GTK_ALIGN_END);
    gtk_container_add               (GTK_CONTAINER(window), button);
    
    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    
    gtk_main();
    
    return 0;
}


    

実行結果

位置指定 GTK_ALIGN_END の場合

ウィンドウの大きさを変えて表示がどうなるかみてください。
位置指定 GTK_ALIGN_CENTER の場合

ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明

  1. gtk_widget_set_size_request(button, 100, 25);
    gtk_widget_set_size_request関数でウィジェットのサイズを設定できます。 引数は次のとおりです。
    1. 第1引数にウィジェットを指定します
    2. 第2引数にウィジェットの横のサイズを指定します
    3. 第3引数にウィジェットの縦のサイズを指定します
  2. gtk_widget_set_halign(button, GTK_ALIGN_END);
    gtk_widget_set_halign関数でウィジェットの左右の配置位置を設定します。 引数は次のとおりです。
    1. 第1引数にウィジェットを指定します
    2. 第2引数にウィジェットの配置位置を次の定数のどれかで指定します
      • GTK_ALIGN_FILL、左右に拡大します。この値がデフォルトになっています
      • GTK_ALIGN_START、左に配置します
      • GTK_ALIGN_END、右に配置します
      • GTK_ALIGN_CENTER、左右の中央に配置します
      • GTK_ALIGN_BASELINE、ベースラインに配置します
  3. gtk_widget_set_valign(button, GTK_ALIGN_END);
    gtk_widget_set_valign関数でウィジェットの上下の配置位置を設定します。 引数は次のとおりです。
    1. 第1引数にウィジェットを指定します
    2. 第2引数にウィジェットの配置位置を次の定数のどれかで指定します
      • GTK_ALIGN_FILL、上下に拡大します。この値がデフォルトになっています
      • GTK_ALIGN_START、上に配置します
      • GTK_ALIGN_END、下に配置します
      • GTK_ALIGN_CENTER、上下の中央に配置します
      • GTK_ALIGN_BASELINE、ベースラインに配置します
  4. 次に、gtk_container_add関数でwindowコンテナーに buttonを配置します。
  5. このようにすると、ウィンドウの中でも、自由にレイアウトできるようになります。
  6. なお、このサンプルはGTK3に対応しています。GTK2でコンパイルした場合は、 警告(warning)が出ますが、実行はできます。


フィクスド

fixed.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *fixed;
    GtkWidget *button1;
    GtkWidget *button2;
    GtkWidget *button3;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new     (0);
    gtk_window_set_title        (GTK_WINDOW(window), "Fixed");
    gtk_window_set_default_size (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
                                /* GTK_WIN_POS_CENTER は 1 です */
    
    fixed = gtk_fixed_new();
    gtk_container_add           (GTK_CONTAINER(window), fixed);
    
    button1 = gtk_button_new_with_label("Button 1");
    button2 = gtk_button_new_with_label("Button 2");
    button3 = gtk_button_new_with_label("Button 3");
    gtk_fixed_put               (GTK_FIXED(fixed), button1,  30,  20);
    gtk_fixed_put               (GTK_FIXED(fixed), button2, 110, 100);
    gtk_fixed_put               (GTK_FIXED(fixed), button3, 190, 180);
    gtk_widget_set_size_request (button1, 100, 25);
    gtk_widget_set_size_request (button2, 100, 25);
    gtk_widget_set_size_request (button3, 100, 25);
    
    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    
    gtk_main();
    
    return 0;
}
    

実行結果


GTKのボタンは、GTK独特のものになります。
ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明


ボックス

box.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *textview;
    GtkWidget *swin;
    GtkWidget *frame;
    GtkWidget *ok;
    GtkWidget *cancel;
    GtkWidget *hbox;
    GtkWidget *vbox;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new         (0);
    gtk_window_set_title            (GTK_WINDOW(window), "Box");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
    gtk_container_set_border_width  (GTK_CONTAINER(window), 15);
    
    
    textview    = gtk_text_view_new         ();
    swin        = gtk_scrolled_window_new   (NULL, NULL);
    gtk_scrolled_window_set_policy          (GTK_SCROLLED_WINDOW(swin),
                                             GTK_POLICY_AUTOMATIC,
                                             GTK_POLICY_AUTOMATIC);
    frame       = gtk_frame_new             (NULL);
    gtk_container_add                       (GTK_CONTAINER(swin),
                                             textview);
    gtk_container_add                       (GTK_CONTAINER(frame),
                                             swin);
    
    ok          = gtk_button_new_with_label ("OK");
    cancel      = gtk_button_new_with_label ("Cancel");
    gtk_widget_set_size_request             (ok,     100, 25);
    gtk_widget_set_size_request             (cancel, 100, 25);
    
    hbox        = gtk_box_new       (GTK_ORIENTATION_HORIZONTAL, 15);
    gtk_box_pack_start              (GTK_BOX(hbox), ok,     0, 0, 0);
    gtk_box_pack_start              (GTK_BOX(hbox), cancel, 0, 0, 0);
            /* 第2引数と第3引数の0はFALSEという意味です。第4引数は数値の0です */
    gtk_widget_set_halign           (hbox, GTK_ALIGN_END);
    
    vbox        = gtk_box_new       (GTK_ORIENTATION_VERTICAL, 15);
    gtk_box_pack_start              (GTK_BOX(vbox), frame,  1, 1, 0);
            /* 第2引数と第3引数の0はTRUEという意味です。第4引数は数値の0です */
    gtk_box_pack_start              (GTK_BOX(vbox), hbox,   0, 0, 0);
    gtk_container_add               (GTK_CONTAINER(window), vbox);
    
    g_signal_connect                (G_OBJECT(window), "destroy",
                                     G_CALLBACK(gtk_main_quit), NULL);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
    

実行結果


ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明

  1. GTKで複数行の文字列を入力できるウィジェットを テキストビュー(textview)と言います。
  2. テキストビューは、gtk_text_view_new関数で作ります。引数にはテキストビューに 表示される文字列を指定します。何も指定しないこともできます。
  3. gtk_scrolled_window_new関数で テキストビューに付けるスクロールバーを作ります。引数は通常、NULL, NULL とします。
  4. gtk_scrolled_window_set_policy関数で スクロールバーがどのタイミングで表示されるかを指定します。
    第1引数に対象となるスクロールドウィンドウを、 第2引数に横スクロールの表示タイミングを、 第3引数に縦スクロールの表示タイミングを指定します。
    表示タイミングには、常に表示されるGTK_POLICY_ALWAYSと、 必要な時に表示されるGTK_POLICY_AUTOMATICがあります。
  5. gtk_frame_new関数で作られるフレームは、四角い枠線です。 中にウィジェットを配置できる目に見えるコンテナーです。
    引数に文字列を渡すと、フレームにタイトルとして表示されます。 タイトルが欲しくない場合は、NULLとしなければなりません。
  6. gtk_container_add関数で、スクロールドウィンドウにテキストビューを配置します。
  7. gtk_container_add関数で、フレームコンテナーにテキストビューを配置します。 テキストビューには枠線がありませんので、枠線を表示するフレームに配置しました。
  8. ボックス(box)コンテナーは、 複数のウィジェットを横や縦に配置できるコンテナーです。
  9. ボックスコンテナーは gtk_box_new関数で作ります。引数は次のとおりです。
    1. 第1引数に縦ボックスにするか横ボックスにするか指定します
      • GTK_ORIENTATION_HORIZONTALを指定すると横ボックスになります
      • GTK_ORIENTATION_VERTICALを指定すると縦ボックスになります
    2. 第2引数にボックスに配置するウィジェットの間のギャップ(gap、間隙)を 指定します
      • 横ボックスではウィジェット同士の横のギャップを指定したことになります
      • 縦ボックスではウィジェット同士の縦のギャップを指定したことになります
  10. ボックスにウィジェットを配置する方法は、gtk_container_add関数も使えますが、 gtk_box_pack_start関数を使うと複数のウィジェットを配置できます。 引数は次のとおりです。
    1. 第1引数に対象となるボックス
    2. 第2引数に配置するウィジェット
    3. 第3引数に配置したウィジェットを拡大したい場合にはTRUEを、 拡大したくない場合はFALSEを指定
    4. 第4引数にウィジェットが、自身が割り当てられた領域を埋める場合はTRUEを、 埋めない場合はFALSEを指定します
    5. 第5引数にウィジェットの周りのギャップを指定します


テーブル、グリッド、ボックス

table.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *table;
    GtkWidget *title;
    GtkWidget *author;
    GtkWidget *review;
    GtkWidget *entry1;
    GtkWidget *entry2;
    GtkWidget *textview;
    GtkWidget *swin;
    GtkWidget *frame;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new         (0);
    gtk_window_set_title            (GTK_WINDOW(window), "Table");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
    gtk_container_set_border_width  (GTK_CONTAINER(window), 15);
    
    table       = gtk_table_new     (3, 2, FALSE);
    gtk_container_add               (GTK_CONTAINER(window), table);
    
    title       = gtk_label_new     ("Title");
    author      = gtk_label_new     ("Author");
    review      = gtk_label_new     ("Review");
    entry1      = gtk_entry_new     ();
    entry2      = gtk_entry_new     ();
    textview    = gtk_text_view_new ();
    gtk_label_set_xalign            (GTK_LABEL(title),  0);
    gtk_label_set_yalign            (GTK_LABEL(title),  0);
    gtk_label_set_xalign            (GTK_LABEL(author), 0);
    gtk_label_set_yalign            (GTK_LABEL(author),  0);
    gtk_label_set_xalign            (GTK_LABEL(review), 0);
    gtk_label_set_yalign            (GTK_LABEL(review), 0);
    frame       = gtk_frame_new     (NULL);
    swin        = gtk_scrolled_window_new   (NULL, NULL);
    gtk_scrolled_window_set_policy  (GTK_SCROLLED_WINDOW(swin),
                                     GTK_POLICY_AUTOMATIC,
                                     GTK_POLICY_AUTOMATIC);
    gtk_container_add               (GTK_CONTAINER(swin),   textview);                                        
    gtk_container_add               (GTK_CONTAINER(frame),  swin);
    
    gtk_table_attach    (GTK_TABLE(table), title, 0, 1, 0, 1,
                         GTK_FILL, GTK_FILL, 5, 5);
    gtk_table_attach    (GTK_TABLE(table), author, 0, 1, 1, 2,
                         GTK_FILL, GTK_FILL, 5, 5);
    gtk_table_attach    (GTK_TABLE(table), review, 0, 1, 2, 3,
                         GTK_FILL, GTK_FILL, 5, 5);
    gtk_table_attach    (GTK_TABLE(table), entry1, 1, 2, 0, 1,
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 5, 5);
    gtk_table_attach    (GTK_TABLE(table), entry2, 1, 2, 1, 2,
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 5, 5);
    gtk_table_attach    (GTK_TABLE(table), frame,   1, 2, 2, 3,
                         GTK_EXPAND|GTK_FILL,
                         GTK_EXPAND|GTK_FILL, 5, 5);

    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
    

実行結果


ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明

  1. テーブルは gtk_table_new関数で作ります。第1引数は行(row、縦の数) 第2引数には列(column、横の数)を指定します。
    第3引数にTRUEを指定すると配置されるウィジェットが同じサイズになります。 FALSEを指定すると強制的に同じサイズになることはありません。
  2. gtk_label_new関数でラベルというユーザーが変更できない文字列を作れます。 引数には表示される文字列を指定します。
  3. gtk_entry_new関数で一行だけ入力できるエントリーというウィジェットを作れます。 引数には表示したい文字列を指定します。何も指定しないこともできます。
  4. gtk_label_set_xalign関数でラベルの文字が表示される横の位置を指定できます。 0を指定すると左に、1を指定すると右に、0.5を指定すると中央になります。
  5. gtk_label_set_yalign関数でラベルも文字が表示される縦の位置を指定できます。 0を指定すると上に、1を指定すると下に、0.5を指定すると中央になります。
  6. テーブルにウィジェットを配置するには、gtk_table_attach関数を使います。 引数は次のとおりです。
    1. 第1引数に対象となるテーブル
    2. 第2引数に配置するウィジェット
    3. 第3引数にウィジェットが隣接する左の列番号(列番号は0から始まります)
    4. 第4引数にウィジェットが隣接する右の列番号
    5. 第5引数にウィジェットが隣接する上の行番号(行番号は0から始まります)
    6. 第6引数にウィジェットが隣接する下の行番号
    7. 第7引数に横方向に拡大するかどうか(GTK_EXPANDで拡大します GTK_FILLは領域を埋めるという意味だけになります)
    8. 第8引数に縦方向に拡大するかどうか
    9. 第9引数に横方向のギャップ(gap、間隙)
    10. 第10引数に縦方向のギャップ


grid.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *grid;
    GtkWidget *title;
    GtkWidget *author;
    GtkWidget *review;
    GtkWidget *entry1;
    GtkWidget *entry2;
    GtkWidget *textview;
    GtkWidget *swin;
    GtkWidget *frame;
    
    gtk_init(&argc, &argv);
    
    window  = gtk_window_new        (0);
    gtk_window_set_title            (GTK_WINDOW(window), "Grid");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
    gtk_container_set_border_width  (GTK_CONTAINER(window), 20);
    
    grid    = gtk_grid_new          ();
    gtk_container_add               (GTK_CONTAINER(window), grid);
    gtk_grid_set_column_spacing     (GTK_GRID(grid), 10);
    gtk_grid_set_row_spacing        (GTK_GRID(grid), 10);
    
    title       = gtk_label_new     ("Title");
    author      = gtk_label_new     ("Author");
    review      = gtk_label_new     ("Review");
    entry1      = gtk_entry_new     ();
    entry2      = gtk_entry_new     ();
    textview    = gtk_text_view_new ();
    gtk_label_set_xalign            (GTK_LABEL(title),  0);
    gtk_label_set_yalign            (GTK_LABEL(title),  0);
    gtk_label_set_xalign            (GTK_LABEL(author), 0);
    gtk_label_set_yalign            (GTK_LABEL(author),  0);
    gtk_label_set_xalign            (GTK_LABEL(review), 0);
    gtk_label_set_yalign            (GTK_LABEL(review), 0);
    frame       = gtk_frame_new     (NULL);
    swin        = gtk_scrolled_window_new   (NULL, NULL);
    gtk_scrolled_window_set_policy          (GTK_SCROLLED_WINDOW(swin),
                                             GTK_POLICY_AUTOMATIC,
                                             GTK_POLICY_AUTOMATIC);
    gtk_container_add               (GTK_CONTAINER(swin), textview);
    gtk_container_add               (GTK_CONTAINER(frame), swin);
        
    gtk_grid_attach         (GTK_GRID(grid), title,  0, 0,  1, 1);
    gtk_grid_attach         (GTK_GRID(grid), entry1, 1, 0,  1, 1);
    gtk_grid_attach         (GTK_GRID(grid), author, 0, 1,  1, 1);
    gtk_grid_attach         (GTK_GRID(grid), entry2, 1, 1,  1, 1);
    gtk_grid_attach         (GTK_GRID(grid), review, 0, 2,  1, 1);
    gtk_grid_attach         (GTK_GRID(grid), frame,  1, 2,  1, 1);
    gtk_entry_set_max_width_chars   (GTK_ENTRY(entry1), 10000);
        
    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
	

実行結果


ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明

  1. グリッドは、gtk_grid_new関数で作ります。引数はありません。
  2. グリッドに配置されるウィジェット同士の横のスペースは、 gtk_grid_set_column_spacing関数で設定します。
  3. グリッドに配置されるウィジェット同士の縦のスペースは、 gtk_grid_set_row_spacing関数で設定します。
  4. グリッドにウィジェットを配置するには、gtk_grid_attach関数を使います。 引数は次のとおりです。
    1. 第1引数にグリッド
    2. 第2引数に配置するウィジェット
    3. 第3引数に配置する列番号(横の順序を表す列番号は0から始まります)
    4. 第4引数に配置する行番号(縦の順序を表す行番号は0から始まります)
    5. 第5引数に配置するウィジェットが使用する列(横)の数
    6. 第6引数に配置するウィジェットが使用する行(縦)の数
  5. グリッドの格子を個別に拡大する方法はありません。第2列については エントリーのgtk_entry_set_max_width_chars関数を使って、 強制的に拡張しました。
  6. 第3行については、拡大する方法がありません。
    例えば、第3行に多くの格子数を与え、行の均一特性(ホモジーニアス、homogeneous)を TRUEにすると、拡大しないこともありません。しかし、ウィンドウの大きさを変えると、 通常、縦に拡大しないエントリーまでも拡大するようになってしまいます。


review.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *title;
    GtkWidget *author;
    GtkWidget *review;
    GtkWidget *entry1;
    GtkWidget *entry2;
    GtkWidget *textview;
    GtkWidget *swin;
    GtkWidget *frame;
    GtkWidget *hbox1;
    GtkWidget *hbox2;
    GtkWidget *hbox3;
    GtkWidget *vbox;
    
    gtk_init(&argc, &argv);
    
    window  = gtk_window_new        (0);
    gtk_window_set_title            (GTK_WINDOW(window), "Review");
    gtk_window_set_default_size     (GTK_WINDOW(window), 320, 240);
    gtk_window_set_position         (GTK_WINDOW(window), 1);
    gtk_container_set_border_width  (GTK_CONTAINER(window), 20);
    
    vbox    = gtk_box_new           (GTK_ORIENTATION_VERTICAL,   10);
    hbox1   = gtk_box_new           (GTK_ORIENTATION_HORIZONTAL, 10);
    hbox2   = gtk_box_new           (GTK_ORIENTATION_HORIZONTAL, 10);
    hbox3   = gtk_box_new           (GTK_ORIENTATION_HORIZONTAL, 10);
    gtk_container_add               (GTK_CONTAINER(window), vbox);
    
    title       = gtk_label_new     ("Title");
    author      = gtk_label_new     ("Author");
    review      = gtk_label_new     ("Review");
    entry1      = gtk_entry_new     ();
    entry2      = gtk_entry_new     ();
    textview    = gtk_text_view_new ();
    
    gtk_widget_set_size_request     (title,  40, -1);
    gtk_widget_set_size_request     (author, 40, -1);
    gtk_widget_set_size_request     (review, 40, -1);
    gtk_label_set_xalign            (GTK_LABEL(title),  0);
    gtk_label_set_yalign            (GTK_LABEL(title),  0);
    gtk_label_set_xalign            (GTK_LABEL(author), 0);
    gtk_label_set_yalign            (GTK_LABEL(author), 0);
    gtk_label_set_xalign            (GTK_LABEL(review), 0);
    gtk_label_set_yalign            (GTK_LABEL(review), 0);
    frame       = gtk_frame_new     (NULL);
    swin        = gtk_scrolled_window_new   (NULL, NULL);
    gtk_scrolled_window_set_policy          (GTK_SCROLLED_WINDOW(swin),
                                             GTK_POLICY_AUTOMATIC,
                                             GTK_POLICY_AUTOMATIC);
    gtk_container_add               (GTK_CONTAINER(swin), textview);
    gtk_container_add               (GTK_CONTAINER(frame), swin);
    
    gtk_box_pack_start              (GTK_BOX(hbox1), title,  0, 0, 0);
    gtk_box_pack_end                (GTK_BOX(hbox1), entry1, 1, 1, 0);
    gtk_box_pack_start              (GTK_BOX(vbox), hbox1,   0, 0, 0);
    
    gtk_box_pack_start              (GTK_BOX(hbox2), author, 0, 0, 0);
    gtk_box_pack_end                (GTK_BOX(hbox2), entry2, 1, 1, 0);
    gtk_box_pack_start              (GTK_BOX(vbox),  hbox2,  0, 0, 0);
    
    gtk_box_pack_start              (GTK_BOX(hbox3), review, 0, 0, 0);
    gtk_box_pack_end                (GTK_BOX(hbox3), frame,  1, 1, 0);
    gtk_box_pack_end                (GTK_BOX(vbox), hbox3,   1, 1, 0);
    
    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
    

実行結果


ウィンドウの大きさを変えて表示がどうなるかみてください。

コード説明

  1. このレイアウト方法の場合、ラベルのサイズを
    gtk_widget_set_size_request(title, 40, -1)関数で決めなければなりません。 第3引数の -1 はデフォルトのサイズという意味になります。
  2. ボックスにウィジェットを追加するには、ボックスの先頭から追加する gtk_box_pack_start関数と、ボックスの末尾から追加する gtk_box_pack_end関数があります。
  3. gtk_box_pack_start関数とgtk_box_pack_end関数の第3引数と第4引数で 使われている数字は 1 がTRUEで 0 がFALSEという意味です。
    第5引数はウィジェット同士の空白のサイズを表す数値です。



63990 visits
Posted: Dec. 14, 2019
Update: Dec. 30, 2019

ホーム   C/C++チュートリアル   目次