Chinaunix首页 | 论坛 | 博客
  • 博客访问: 636911
  • 博文数量: 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:56:47

二、笔记本构件

       笔记本构件(GtkNotebook) 是互相重叠的页面集合,每一页都包含不同的信息,且一次只有一个页面是可见的。该构件在G U I (图形用户接口)编程中很常用。要说明大量的相似信息,同时把它们分别显示时,使用这种构件是一个很好的方法。许多应用程序的“选项”对话框都使用了这个构件。

       用函数gtk_notebook来创建笔记本构件。

 

6

名称:

gtk_notebook_new

功能

获得按钮盒的布局

头文件

#include

函数原形

GtkWidget *gtk_notebook_new( void );

参数

返回值

新的笔记本构件

 

     

 

 

  一旦创建了笔记本构件,就可以使用一系列的函数操作该构件。下面将对它们进行分别讨论。

      

       首先是定位页标签,用函数gtk_notebook_set_tab_pos来完成。

7

名称:

gtk_notebook_set_tab_pos

功能

定位页标签

头文件

#include

函数原形

void gtk_notebook_set_tab_pos( GtkNotebook *notebook,GtkPositionType pos );

参数

notebook   笔记本构件

pos        标签位置

返回值

 

 

 

 

 

 

 

 

 

 

 

 

 

pos参数可以取以下几个值:

GTK_POS_LEFT 将标签页放在左边

GTK_POS_RIGHT 将标签页放在右边

GTK_POS_TOP 将标签页放在顶部

GTK_POS_BOTTOM 将标签页放在底部

它的缺省值是GTK_POS_TOP

 

下面看一下怎样向笔记本中添加页面。有三种方法向笔记本中添加页面。前两种方法是非常相似的。

 

8

名称:

gtk_notebook_append_page

gtk_notebook_prepend_page

gtk_notebook_prepend_page

功能

在笔记本构件插入页面

头文件

#include

函数原形

void gtk_notebook_append_page( GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label );

void gtk_notebook_prepend_page( GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label );

void gtk_notebook_insert_page( GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label,gint position );

参数

notebook       笔记本构件

child          子页面

tab_label       页面标签

position        插入位置

返回值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

gtk_notebook_append_page函数按从前向后的顺序向笔记本构件插入页面,

gtk_notebook_prepend_page函数总是把页面插入到笔记本构件的第一个页面。

gtk_notebook_insert_page函数按指定把页面插入到笔记本构件。位置由position指定。

child 参数是放在笔记本上的子构件, tab_label是要添加的页面的标签。子构件必须分别创建,一般是一个容器构件,比如说组装盒、表格等构件。

       position为要插入位置,第一页位置为0

      

下面就是程序例子:

#include

 

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *notebook;

GtkWidget *box;

GtkWidget *label;

GtkWidget *lb;

 

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_widget_set_size_request(window,200,100);

gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);

 

notebook=gtk_notebook_new();/*创建笔记本构件*/

gtk_container_add(GTK_CONTAINER(window),notebook);/*将笔记本构件加入窗体*/

gtk_widget_show(notebook);

 

box=gtk_hox_new(FALSE,0);/*创建组装盒构件*/

label=gtk_label_new(“常规”);/*创建标签构件*/

lb=gtk_label_new(“这是常规页面”);

gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,label);/*插入新页面*/

gtk_box_pack_start(GTK_BOX(box),lb,FALSE,FALSE,10);

gtk_widget_show(box);

gtk_widget_show(label);

gtk_widget_show(lb);

 

box=gtk_hox_new(FALSE,0);

label=gtk_label_new(“高级”);

lb=gtk_label_new(“这是高级页面”);

gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),box,label);

gtk_box_pack_start(GTK_BOX(box),lb,FALSE,FALSE,10);

gtk_widget_show(box);

gtk_widget_show(label);

gtk_widget_show(lb);

 

gtk_widget_show(window);

gtk_main();

}

       程序运行后得到如下界面:

 

9

名称:

gtk_notebook_remove_page

功能

在笔记本构件中删除页面

头文件

#include

函数原形

void gtk_notebook_remove_page( GtkNotebook *notebook,gint page_num );

参数

notebook        笔记本构件

page_num        子页面

返回值

 

 

 

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