分类: 嵌入式
2009-11-26 13:33:07
二、组合表
组合表允许将多个构件放入一个窗口内,这一点类似于组装盒。但是,组装盒在放置构件时只允许纵向或横向的二维控制。组合表则类似于HTML表;允许用行和列控制构件的放置,并且对象可以取多行或多列。
4.
名称:: |
gtk_table_new |
功能: |
创建组合表 |
头文件: |
#include |
函数原形: |
GtkWidget* gtk_table_new(guint rows,guint columns,gboolean homogeneous); |
参数: |
rows 表的行数 columns 表的列数 homogeneous 子构件是否具有同样的大小 |
返回值: |
新的组合表 |
rows |
rows 和columns表示建表所用的行数和列数。homogeneous的效果和在组装盒中homogeneous的使用效果相同。如果在建立组合表时它被设置为TRUE,表内的表框用最大构件的外框。如果它被设置为FALSE,则将每一列的宽度设置为本例中最大构件的宽度,每一行的高度设置为行中最大构件的高度。
行的排列从0~rows-1,列的排列从0~columns-1.当增加构件时,每个构件提供开始列、结束列、开始行和结束行。如果构件将被放在表的左上角,列的范围从0到1。行的范围从0到1。
5.
名称:: |
gtk_table_attach gtk_table_attch_defaults |
功能: |
将控件加到表中 |
头文件: |
#include |
函数原形: |
void gtk_table_attach(GtkTable *table,GtkWidget * child,guint left_attach,guint right_attach,guint top_attach,guint botton_attach, GtkAttachOptions xoptions,GtkAttachOptions yoptions,guint xpadding,guint ypadding); void gtk_table_attach_defaults( GtkTable *table,GtkWidget * child,guint left_attach,guint right_attach,guint top_attach,guint botton_attach); |
参数: |
table 组合表名 child 子构件名 left_attach 横向起始位置 right_attach 横向结束位置 top_attach 纵向起始位置 botton_attach 纵向结束位置 xoptions 横向选项 yoptions 纵向选项 xpadding 横向填充像元 ypadding 纵向填充像元 |
返回值: |
无 |
两个函数都可以将构件加到表中。
table为表的名字,child和widget为构件的名字。
left_attach、right_attach、top_attach和botton_attach表示控件在表中的位置。
xoptions和yoptions可以用GTK_FILL、GTK_SHRINK和GTK_EXPAND,或者用3者的任意组合。其中GTK_FILL选项表示构件充分利用分配给它的空间进行扩展。GTK_SHRINK选项允许构件缩小到比原来分配的空间还小的空间。GTK_EXPAND选项使表扩展填满它插入的所有空间。
xpadding和ypadding表示围绕构件填充的像元数。
gtk_table_attach_defaults函数取比较少的参数,并对gtk_table_attach函数使用的xoptions、yoptions、xpadding和ypadding参数用缺省值来代替。对gtk_table_attach_defaults函数来说,xpadding和ypadding的缺省值为0;而xoptions和yoptions的却省值为(GTK_FILL|GTK_EXPAND)。
下面是应用组合表的程序例子:
/*table.c*/ #include
int main(int argc,char *argv[]) { GtkWidget *window; /*定义窗体*/ GtkWidget *table; /*定义组合表*/ GtkWidget *button; /*定义按钮*/ gtk_init(&argc,&argv); /*初始化*/ window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/ gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); /*登记destroy信号函数*/ table=gtk_table_new(4,4,FALSE); /*创建组合表*/ button=gtk_button_new_with_label(“button gtk_table_attach(GTK_TABLE(table),button,0,1,0,1,GTK_FILL,GTK_FILL,0,0);/*把按钮加入组合表*/ gtk_widget_show(button); /*显示按钮*/ button=gtk_button_new_with_label(“button gtk_table_attach(GTK_TABLE(table),button,1,2,1,2,GTK_FILL,GTK_FILL,0,0); gtk_widget_show(button); button=gtk_button_new_with_label(“button gtk_table_attach(GTK_TABLE(table),button,2,3,2,3,GTK_FILL,GTK_FILL,0,0); gtk_widget_show(button); gtk_container_add(GTK_CONTAINER(window),table); /*把组合表添加到窗体上*/ gtk_widget_show(table); /*显示组合表*/ gtk_widget_show(window); /*显示窗体*/ gtk_main(); /*等待用户操作*/ return FALSE; } |
$gcc –o table table.c `pkg-config –cflags –libs gtk+-2.0`
$./table
这里没有给出参数的所用情况的程序,大家可以把相应的参数换一下,体会各个参数的作用。