●GtkWidget *widgetやGtkWindow *windowのサイズを意図した大きさにするには

  まず、gtk_widget_set_usize (GtkWidget *widget, gint width, gint height)は、 そのwidgetの
最小の大きさを決めるもの であり、表示する大きさは固定できません。
  windowについても、gtk_window_set_default_size (GtkWindow *window, gint width, gint height)
は、起動時のwindowの大 きさを指定するものですが、標準ではやはり、内部のwidgetが必要
とする大きさ より小さくできません。
  たとえ gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE) としたとし
ても、内部のwidgetが必要とする大きさになってしまいます。

  そこで、windowの大きさを指定するために、
gtk_widget_set_usize (child_widget, WIDTH, HEIGHT);
でコンテナ内部の子widgetのサイズを調整し、その後、
gtk_window_set_policy (GTK_WINDOW(window), FALSE, FALSE, FALSE);
とする方法が考えられます。
  ただし、子widgetの大きさの変化に合わせてwindowの 大きさが変化することは避けられません。
子widgetの大きさが変化しない場合のみ に有効です。

  問答無用でwidgetの大きさを決めてしまうには、
gdk_window_resize (widget->window, WIDTH, HEIGHT);
のようにするしかありません。しかしこれも一時的な効果しかありません。

戻る