Chinaunix首页 | 论坛 | 博客
  • 博客访问: 668091
  • 博文数量: 237
  • 博客积分: 4285
  • 博客等级: 上校
  • 技术积分: 2701
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-15 14:05
文章分类

全部博文(237)

文章存档

2014年(2)

2013年(3)

2012年(47)

2011年(15)

2010年(68)

2009年(102)

我的朋友

分类: 嵌入式

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.当增加构件时,每个构件提供开始列、结束列、开始行和结束行。如果构件将被放在表的左上角,列的范围从01。行的范围从01

      

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为表的名字,childwidget为构件的名字。

left_attachright_attachtop_attachbotton_attach表示控件在表中的位置。

xoptionsyoptions可以用GTK_FILLGTK_SHRINKGTK_EXPAND,或者用3者的任意组合。其中GTK_FILL选项表示构件充分利用分配给它的空间进行扩展。GTK_SHRINK选项允许构件缩小到比原来分配的空间还小的空间。GTK_EXPAND选项使表扩展填满它插入的所有空间。

xpaddingypadding表示围绕构件填充的像元数。

 

gtk_table_attach_defaults函数取比较少的参数,并对gtk_table_attach函数使用的xoptionsyoptionsxpaddingypadding参数用缺省值来代替。对gtk_table_attach_defaults函数来说,xpaddingypadding的缺省值为0;而xoptionsyoptions的却省值为(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(“button1”); /*创建按钮*/

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(“button1”);

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(“button1”);

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

 

这里没有给出参数的所用情况的程序,大家可以把相应的参数换一下,体会各个参数的作用。

 

阅读(748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~