質問: gtk_hbox_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(window); gtk_main(); return 0; } ``` **質問内容は以下の2つです。** 1. swを大きくし,hboxを小さくするにはどうすればよいか? 2. スクロールバーは既存のものとして、他のデザインはないか?
回答: 1つめの質問について、まずコードを提示しておきます。 ``` #include static void hoge(GtkWidget *widget,gchar *text) { } int main(int argc, char** argv) { GtkWidget *window; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *sw; GtkWidget *textview; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "質問です。"); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_widget_set_size_request(vbox, 200, 150); gtk_container_add(GTK_CONTAINER(window), vbox); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); textview = gtk_text_view_new(); gtk_container_add(GTK_CONTAINER(sw), textview); hoge(textview,""); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* GtkWidget *label = gtk_label_new("test"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); */ gtk_widget_show_all(window); gtk_main(); return 0; } ``` gtk の box を作る関数は以下の2種類があります。 * `gtk_vbox_new()`, `gtk_hbox_new()` のように、関数名に v, h を含むもの * `gtk_box_new()` のように、引数で横か縦かを指定するもの 今回は、質問者さんのコードでは引数で指定していたので、引数で指定する方にしました。 サイズは vbox の方に指定しています。 2つめの質問については、どういったデザインがお好みなのか解らないのと、私自身デザインに疎いので、省略させていただきます。