盒子

盒子是一种布局容器,为你的应用程序提供框架。你可以将盒子嵌套在其他盒子内部,以构建用户界面,并控制每个小部件如何相对于其父容器扩展和对齐。

盒子具有方向,可以是水平或垂直,并分别在同一行或列上排列其子部件。

同构盒子

默认情况下,盒子会根据方向为每个子部件提供其期望的大小。如果你希望每个子部件具有相同的大小,可以使用 GtkBox:homogeneous 属性

GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget *hello = gtk_button_new_with_label ("Hello");
GtkWidget *gbye = gtk_button_new_with_label ("Goodbye");

gtk_box_append (GTK_BOX (box), hello);
gtk_box_append (GTK_BOX (box), gbye);

gtk_box_set_homogeneous (GTK_BOX (box), TRUE);

扩展盒子

如果子部件设置为扩展,盒子将为其提供额外的空间

GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);

GtkWidget *foo = gtk_button_new_with_label ("Live");
GtkWidget *bar = gtk_button_new_with_label ("Laugh");
GtkWidget *baz = gtk_button_new_with_label ("Love");

gtk_box_append (GTK_BOX (box), foo);
gtk_box_append (GTK_BOX (box), bar);
gtk_box_append (GTK_BOX (box), baz);

// We set the middle button to expand, which will make the
// box expand, if given more space
gtk_widget_set_hexpand (bar, TRUE);

组件的常用方法

  • set_baseline_position() 方法控制盒子子部件的基线对齐方式;你可以指定当盒子从其父容器接收更多空间时,子部件的对齐方式。

API 参考

在示例中,我们使用了以下类