GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件(2)

来源:互联网 发布:工资条短信群发软件 编辑:程序博客网 时间:2024/05/16 03:12
 

二、组合表

       组合表允许将多个构件放入一个窗口内,这一点类似于组装盒。但是,组装盒在放置构件时只允许纵向或横向的二维控制。组合表则类似于HTML表;允许用行和列控制构件的放置,并且对象可以取多行或多列。

      

4

名称:

gtk_table_new

功能

创建组合表

头文件

#include <gtk/gtk.h>

函数原形

GtkWidget* gtk_table_new(guint rows,guint columns,gboolean homogeneous);

参数

rows           表的行数

columns        表的列数

homogeneous    子构件是否具有同样的大小

返回值

新的组合表

      

 

 

 

 

 

      

 

 

 

 

 

 

 

 

 

 

 

 

 

rows columns表示建表所用的行数和列数。homogeneous的效果和在组装盒中homogeneous的使用效果相同。如果在建立组合表时它被设置为TRUE,表内的表框用最大构件的外框。如果它被设置为FALSE,则将每一列的宽度设置为本例中最大构件的宽度,每一行的高度设置为行中最大构件的高度。

行的排列从0~rows-1,列的排列从0~columns-1.当增加构件时,每个构件提供开始列、结束列、开始行和结束行。如果构件将被放在表的左上角,列的范围从01。行的范围从01

      

5

名称:

gtk_table_attach

gtk_table_attch_defaults

功能

将控件加到表中

头文件

#include <gtk/gtk.h>

函数原形

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)。

 

下面是应用组合表的程序例子:

  1. /*table.c*/
  2. #include <getk/gtk.h>
  3. int main(int argc,char *argv[])
  4. {
  5. GtkWidget *window; /*定义窗体*/
  6. GtkWidget *table; /*定义组合表*/
  7. GtkWidget *button; /*定义按钮*/
  8. gtk_init(&argc,&argv); /*初始化*/
  9. window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/
  10. gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); /*登记destroy信号函数*/
  11. table=gtk_table_new(4,4,FALSE); /*创建组合表*/
  12. button=gtk_button_new_with_label(“button1”); /*创建按钮*/
  13. gtk_table_attach(GTK_TABLE(table),button,0,1,0,1,GTK_FILL,GTK_FILL,0,0);/*把按钮加入组合表*/
  14. gtk_widget_show(button); /*显示按钮*/
  15. button=gtk_button_new_with_label(“button1”);
  16. gtk_table_attach(GTK_TABLE(table),button,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
  17. gtk_widget_show(button);
  18. button=gtk_button_new_with_label(“button1”);
  19. gtk_table_attach(GTK_TABLE(table),button,2,3,2,3,GTK_FILL,GTK_FILL,0,0);
  20. gtk_widget_show(button);
  21. gtk_container_add(GTK_CONTAINER(window),table); /*把组合表添加到窗体上*/
  22. gtk_widget_show(table); /*显示组合表*/
  23. gtk_widget_show(window); /*显示窗体*/
  24. gtk_main(); /*等待用户操作*/
  25. return FALSE;
  26. }

$gcc –o table table.c `pkg-config –cflags –libs gtk+-2.0`

$./table

 

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

 

原创粉丝点击