Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148523
  • 博文数量: 53
  • 博客积分: 250
  • 博客等级: 二等列兵
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-17 10:37
文章分类

全部博文(53)

文章存档

2013年(1)

2012年(52)

分类: LINUX

2012-11-27 10:43:01

一、标签构件
  标签构件(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);
}
阅读(806) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~