GTK+ 2.0 教学-盒的细节

由于存在这样的弹性,所以在一开始使用 GTK 中的封装盒(packing box)的时候会有点让人迷惑。这里有许多选项,并且它们不容易一眼看出是如何组合在一起的。然而到最后,这里基本上只有五种不同的风格。

每一行包含一个带有若干按钮的横向盒。gtk_box_pack 是封装每个按钮到横向盒(hbox)的简写。每个按钮都是以同样的方式封装到横向盒里的(例如,以同样参数呼叫 gtk_box_pack_start() 函式)。

这是 gtk_box_pack_start() 函式的宣告。

void gtk_box_pack_start( GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding );

第一个参数是你要把物件封装进去的盒,第二个就是该物件。目前这些物件将都是按钮,即我们要将这些按钮封装到盒中。

gtk_box_pack_start() 和 gtk_box_pack_end() 中的 expand 参数是用来控制元件在盒中如何布置,是要充满所有额外的空间这样盒会均匀分配在给它的空间中(TURE);或是盒收缩到仅仅符合元件的大小(FALSE)。设置 expand 为 FALSE 将允许你向左或向右对齐你的元件。否则,它们会在盒中展开,同样的效果用 gkt_box_pack_start() 或 gtk_box_pack_end() 都可以实现。

fill 参数在 gtk_box_pack 中控制额外空间是如何分配给物件本身(TRUE),还是让额外空间围绕在这些物件周围分布(FALSE)。它只有在 expand 参数也为 TRUE 时才会生效。

当创建一个新盒时,函式看起来像下面这样:

GtkWidget *gtk_hbox_new ( gboolean homogeneous, gint spacing );

gtk_hbox_new() 的 homogeneous 参数(对于gtk_vbox_new()也是一样)控制是否盒里的每个物件具有相同的大小(例如,在横向盒中等宽,或在纵向盒中等高)。若它被设置,gtk_box_pack()常式的expand参数就被忽略了,它本质上总被开启。

spacing(当盒被创建时设置)和 padding(当元素被封装时设置)有什么区别呢?Spacing 是加在物件之间,而 papadding 加在物件的每一边。看下面这张图应该会明白一点:

这面是产生上面这些图片的代码,其中做了不少注释,所以我希望你看下去不会有任何问题。自己编译它并玩玩它吧。

«封装元件

单元首页

»

1 則留言


Comments are closed.