一、标签构件

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

 

       用gtk_label_new创建标签构件:

 

1.

名称::

gtk_label_new

功能:

创建标签构件

头文件:

#include <gtk/gtk.h>

函数原形:

GtkWidget gtk_label_new(char *str);

参数:

str   标签构件正文

返回值:

新的标签构件

      

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

/*label1.c*/

#include <gtk/gtk.h>

 

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 <gtk/gtk.h>

函数原形:

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

参数:

label  要修改的标签构件

str    签构件的正文

返回值:

      

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

 

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

3.

名称::

gtk_label_get

功能:

获得标签构件的正文

头文件:

#include <gtk/gtk.h>

函数原形:

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

参数:

label  要修改的标签构件

str    签构件的正文

返回值:

      

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

 

 

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

  

           

     

下面是代码:

/*tabel2.c*/

#include <gtk/gtk.h>

 

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

}

 

4.

名称::

gtk_label_set_justify

功能:

调整标签构件正文的对齐方式

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_label_set_justify(GtkLabel *label,GtkJustification jtype);

参数:

label  要修改的标签构件

jtype  对齐方式

返回值:

jtype的值可以是:

GTK_JUSTIFY_LEFT                左对齐

GTK_JUSTIFY_RIGHT       右对齐

GTK_JUSTIFY_CENTER           居中对齐

GTK_JUSTIFY_FILL                 充满

标签构件文本会自动换行。用gtk_label_set_line_wrap函数激活自动换行。

5.

名称::

gtk_label_set_line_wrap­

功能:

激活自动换行

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_label_set_line_wrap(GtkLabel *label,gboolean wrap);

参数:

label  要修改的标签构件

wrap   是否自动换行

返回值:

wrap参数可取TRUE或FALSE,对应于自动换行和不自动换行。

可以使用gtk_label_set_pattern函数对标签正文加下划线。

6.

名称::

gtk_label_set_pattern

功能:

对标签正文加下划线

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_label_set_pattern(GtkLabel *label,const gchar *pattern);

参数:

label   要修改的标签构件

pattern 下划线外观

返回值:

pattern参数指定下划线的外观。它由一串下划线和空格组成。下划线指示标签的相应字符应该加一个下划线。

下面我们来练习上面的三个函数。

#include <gtk/gtk.h>

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

{

GtkWidget *window;

GtkWidget *label;

gtk_init (&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_widget_set_usize(window,100,100);

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

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

gtk_widget_set_usize(label,10,10);/*设置标号尺寸*/

gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_CENTER);/*设置标号对齐方式为居中对齐*/

gtk_label_set_line_wrap(GTK_LABEL(label),TRUE);/*打开自动换行*/

gtk_label_set_pattern(GTK_LABEL(label),”_ _  _ _”);/*添加下划线*/

gtk_widget_show(label);

gtk_container_add(GTK_CONTAINER(window),label);

gtk_widget_show(window);

gtk_main();

return 0;

}

运行程序会得到如下结果:

二、事件盒构件

事件盒构件(GtkEventBox)在屏幕上什么也不画,也不能单独对事件做出响应。它的功能是为一些没有X窗口的构件(如label)提供X窗口。使其可以接收信号。它另外一个作用是剪裁这些构件。它的功能有点像Dreamweaver里的焦点。

使一个没有X窗体的构件响应信号分为3步。

一、创建事件盒构件。我们用gtk_event_box_new来创建事件盒构件。

1.

名称::

gtk_event_box_new

功能:

创建事件盒构件

头文件:

#include <gtk/gtk.h>

函数原形:

GtkWidget *gtk_event_box_new( void );

参数:

返回值:

新的事件盒构件

二、将要响应事件的构件加入事件盒构件。

gtk_container_add( GTK_CONTAINER(event_box), child_widget );

三、为事件盒构件绑定一个事件响应。

gtk_signal_connect (GTK_OBJECT(event_box), "button_press_event", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);

下面就是应用事件盒构件的例子。

#include <gtk/gtk.h>

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

{

GtkWidget *window;

GtkWidget *event_box;

GtkWidget *label;

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

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

gtk_container_set_border_width(GTK_CONTAINER(window),10);

event_box=gtk_event_box_new();/*创建事件盒构件*/

gtk_container_add(GTK_CONTAINER(window),event_box);

gtk_widget_show(event_box);

label_gtk_label_new(“Click here to quit”);

gtk_container_add(GTK_CONTAINER(event_box),label);/*将label构件加入事件盒构件*/

gtk_widget_show(label);

gtk_signal_connect(GTK_OBJECT(event_box),”button_press_event”,GTK_SIGNAL_FUNC(gtk_main_quit),NULL);/*为事件盒构件绑定一个事件响应*/

gtk_widget_show(window);

gtk_main();

}

程序运行后得到如下窗体,当用户点击label程序退出。

转载于:https://www.cnblogs.com/JPAORM/archive/2011/12/21/2510059.html

GTK+图形化应用程序开发学习笔记(七)—标签构件.事件盒构件相关推荐

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

    GTK+图形化应用程序开发学习笔记(五)-组装盒.组合表.固定容器构件 一.组装盒 组装盒(GtkBox)也称为组合构件.使用组装盒可以将多个构件放在一个容器中.容器可以把组装盒看作是一个构件.不像按 ...

  2. GTK+图形化应用程序开发学习笔记(四)—容器、构件

    一.构件 上一章我们介绍了如果创建一个窗体,但应用程序仅有一个窗体是不够的我们必须在窗体上添加一些东西(如:按钮,文本框等).这些东西被称为构件,而我们添加的构件的载体被称为容器(如:主窗体). 构件 ...

  3. GTK+图形化应用程序开发学习笔记(一)—概述

    GTK+图形化应用程序开发学习笔记(一)-概述 一.什么是GNOME. GNOME的意思是"GNU Network Object Model Environment"(GNU网络对 ...

  4. GTK+图形化应用程序开发学习笔记(六)—按钮

    一.常用构件函数 最常用的构件是按钮构件.录入字段构件.列表框构件和复合框构件.所有建立按钮的函数返回指向GtkWidget的指针.GtkWidget指针能够调用对构件进行操作的通用函数.函数gtk_ ...

  5. GTK+图形化应用程序开发学习笔记

    http://blog.chinaunix.net/u/22935/showart_305786.html 一.初始化GTK+ 写GTK+程序需要调用gtk_init函数对GTK+ 库函数进行初始化. ...

  6. GTK+图形化应用程序开发学习笔记(三)—窗体

    一.初始化GTK+ 写GTK+程序需要调用gtk_init函数对GTK+库函数进行初始化. 1. 名称:: gtk_init 功能: 初始化GTK+库 头文件: #include <gtk/gt ...

  7. GTK+图形化应用程序开发学习笔记(二)—Glib库

    在学习GTK+之前我们需要先学习一下 glib的有关知识.因为我们将会在以后的学习中遇到这些知识.由于本笔记不是专门介绍glib的,所以下面的介绍不会太详细.   一.什么是glib库        ...

  8. Polyworks脚本开发学习笔记(七)-完成一个自动化任务

    Polyworks脚本开发学习笔记(七)-完成一个自动化任务 利用之前的命令建立一个自动化脚本 第一步: 设置环境参数 设置注释字体避免出现不兼容中文的乱码,常用微软雅黑 #设置注释字体 VIEW A ...

  9. 微信小程序开发学习笔记一

    微信小程序学习笔记(一) 环境使用及创建项目 文件目录设置 JS文件 环境使用及创建项目 环境使用:微信开发者工具 一个微信号只能开发一个微信小程序. 在微信小程序开发手册下载最新版本,学习不要bet ...

最新文章

  1. linux usb摄像头 源码,Linux USB摄像头驱动实现源码分析
  2. 在win10下安装自带的linux,并进行相应的配置
  3. attempt to create delete event with null entity
  4. 计算机安全专家建议:尽快为电脑升级打补丁
  5. 景色宜人的openeim001
  6. SQL触发器 常用语句
  7. python怎么读取中文文件-Python3 解决读取中文文件txt编码的问题
  8. centos 卸载 jdk
  9. python 百度文库_百度文库文档下载地址解析python版【摸索不易,还请支持】
  10. 智慧教育教学案例分析
  11. MyEclipse2018安装破解教程
  12. android 状态栏显示 耳机图标显示,Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
  13. ROS AUV 启动
  14. matlab历史模拟法计算var,历史模拟法、蒙特卡罗模拟法计算VaR和ES值
  15. 【华人学者风采】汪玉 清华大学
  16. ORACLE 触发器控制用户登录之权限限制
  17. 西南大学844信号与系统考研经验(高分上岸学姐)
  18. ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin
  19. SimpleMind安装步骤
  20. ssm基于JavaEE的电脑销售管理系统设计与实现毕业设计源码

热门文章

  1. js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
  2. 用C#实现屏幕键盘!
  3. 福布斯评最佳与最差老板 TCL上黑榜
  4. 【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句
  5. dao-service-servlet-jsp构建简易web通讯录(三层开发)预备知识
  6. CentOS7 按nodejs和npm的方法
  7. php嵌入html代码的三种方法
  8. jq使用教程07_ JQData HTTP 接口正式上线
  9. ubuntu18机器学习环境安装基于anaconda
  10. 用数据说话,基金经理一年到底能挣多少钱?