Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637206
  • 博文数量: 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:38:00

 

一、标签构件

  标签构件(GtkLabel)是GTK中最常见的构件,它是静态的不可编辑的字段。在屏幕上,常常用标号说明其他字段。在按钮上设置标签用来说明按钮,或者放在其他字段的旁边对该字段提供说明。它不能自身引发信号。

 

       gtk_label_new创建标签构件:

 

1

名称:

gtk_label_new

功能

创建标签构件

头文件

#include

函数原形

GtkWidget gtk_label_new(char *str);

参数

str   标签构件正文

返回值

新的标签构件

      

 

 

下面就是创建标号的程序例子:

/*label1.c*/

#include

 

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

{

GtkWidget *window;

GtkWidget *label;

 

gtk_init_chech(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

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

label=gtk_label_new(“This is a label”);/*建立标号*/

gtk_widget_show(label);

 

gtk_container_add(GTK_CONTAINER(window),label);

gtk_widget_show(window);

gtk_main();

return 0;

}

 

下图是运行后的界面:

 

 

 

       创建标签构件后,要改变标签内的文本用gtk_label_set_text函数。

2

名称:

gtk_label_set_text

功能

改变标签构件的正文

头文件

#include

函数原形

void gtk_label_set_text(GtkLabel *label,char *str);

参数

label  要修改的标签构件

str    签构件的正文

返回值

      

 

 

第一个参数是前面创建的标签构件,第而个参数是标签的正文。新的标签正文会根据需要自动调整。在正文中放置换行符,可以创建多行标签。

 

       gtk_label_get函数可以取得标签的当前正文。

3

名称:

gtk_label_get

功能

获得标签构件的正文

头文件

#include

函数原形

void gtk_label_get(GtkLabel *label,char **str);

参数

label  要修改的标签构件

str    签构件的正文

返回值

      

 

 

 

 第一个参数是前面创建的标签构件,第而个参数是要返回的正文字符串。

 

 

    下面我们结合上面的选择按钮编写一个如下图所示的程序:当用户点击选择按钮,上面的tabel显示相应的内容。  

  

           

 

     

下面是代码:

/*tabel2.c*/

#include

 

void button_event(GtkWidget *,gpointer *);

GtkWidget *label;

 

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

{

GtkWidget *window;

GtkWidget *button;

GtkWidget *box;

GSList *group=NULL;

 

gtk_init_chrck(&argc,&argv); /*初始化GTK+工具库*/

window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/

gtk_signal_connect(GTK_OBJECT(window),”delete_event”,G_CALLBACK(gtk_main_quit),NULL); /*登记窗体delete_event信号*/

box=gtk_vbox_new(FALSE,0);/*创建组合框*/

 

label=get_label_new(“Please check!”);/*创建标号*/

gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,15);/*把标号加入组合框*/

 

button=gtk_radio_button_new_with_label(group,”Radio Button1”);/*创建按钮*/

group=gtk_radio_button_group(GTK_RADIO_BUTTON(button));/*把按钮加到组中*/

gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,0);/*把按钮加入组合框*/

gtk_signal_connect(GTK_OBJECT(button),”pressed”,GTK_SIGNAL_FUNC(button_event),”You check button1”);

gtk_widget_show(button);/*显示按钮*/

 

button=gtk_radio_button_new_with_label(group,”Radio Button2”);

group=gtk_radio_button_group(GTK_RADIO_BUTTON(button));

gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,0);

gtk_signal_connect(GTK_OBJECT(button),”pressed”,GTK_SIGNAL_FUNC(button_event),”You check button2”);

gtk_widget_show(button);

 

gtk_container_add(GTK_CONTAINER(window),box);/*把组合框加入窗体*/

gtk_widget_show(label);/*显示标号*/

gtk_widget_show(box);/*显示组合框*/

gtk_widget_show(window);/*显示窗体*/

gtk_main();

return 0;

}

 

void button_event(GtkWidget *widget,gpointer *data)

{

gtk_label_set(GTK_LABEL(lable),(char *)data);

}

 

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