多数组装是通过创建一些“盒(boxes)”来达成的,这是些不可见的构件容器,它们有两种形式:一种是横向盒(horizontal box),一种是纵向盒(vertical box)。当我们组装构件到横向盒里时,这些构件就依着我们调用的顺序由左至右或从右到左水平地插入进去。在纵向盒里,则从顶部到底部或相反地组装构件,你可以使用任意的盒组合,比如盒套盒或者盒挨着盒,用以产生你想要的效果。

创建一个新的横向盒我们调用 gtk_hbox_new(),创建一个新的纵向盒调用 gtk_vbox_new()

gtk_box_pack_start() 和 gtk_box_pack_end() 函数用来将对象组装到这些容器中

gtk_box_pack_start() 将各个控件 从上到下 组装到纵向盒中,或者从左到右组装到横向盒中。
gtk_box_pack_end() 则相反,从下到上组装到纵向盒中,或者从右到左组装到横向盒中。

使用这些函数允许我们调整自己的控件向左或向右对齐,同时也可以混入一些其它的方法来达到我们想要的设计效果。在我们的示例中多数使用 gtk_box_pack_start()。被组装的对象可以是另一个容器或控件。事实上,许多控件本身就是容器,包括按钮,只不过我们通常在按钮中只放入一个标签。

通过使用这些调用,GTK 就会知道要把控件放到哪里去,并且会自动做调整大小及其它美化的事情。至于如何组装你的控件这里还有一些选项。正如你能想到的,在放置和创建控件时,这些方法给了我们很多的弹性。

简单来讲:我们需要借助 box 来进行控件的布局!