组装构件
创建一个应用软件的时候,你可能希望在窗口里放置超过一个以上的构件。我们的
第一个 helloworld 示例仅用了一个构件,因此我们能够简单地使用
gtk_container_add()来“组装”这个构件到窗口中。但当你想要放置更多的构件
到一个窗口中时,如何控制各个构件的定位呢?这时就要用到组装(Packing)了。
组装盒的原理
多数组装是通过创建一些“盒(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 就会知道要把构件放到哪里去,并且会自动做调整大小及
其它美化的事情。至于如何组装你的构件这里还有一些选项。正如你能想到的,在
放置和创建构件时,这些方法给了我们很多的弹性。