GTK+图形化应用程序开发学习笔记(七)—标签构件.事件盒构件
一、标签构件
标签构件(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); } |
名称:: |
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+图形化应用程序开发学习笔记(七)—标签构件.事件盒构件相关推荐
- GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件
GTK+图形化应用程序开发学习笔记(五)-组装盒.组合表.固定容器构件 一.组装盒 组装盒(GtkBox)也称为组合构件.使用组装盒可以将多个构件放在一个容器中.容器可以把组装盒看作是一个构件.不像按 ...
- GTK+图形化应用程序开发学习笔记(四)—容器、构件
一.构件 上一章我们介绍了如果创建一个窗体,但应用程序仅有一个窗体是不够的我们必须在窗体上添加一些东西(如:按钮,文本框等).这些东西被称为构件,而我们添加的构件的载体被称为容器(如:主窗体). 构件 ...
- GTK+图形化应用程序开发学习笔记(一)—概述
GTK+图形化应用程序开发学习笔记(一)-概述 一.什么是GNOME. GNOME的意思是"GNU Network Object Model Environment"(GNU网络对 ...
- GTK+图形化应用程序开发学习笔记(六)—按钮
一.常用构件函数 最常用的构件是按钮构件.录入字段构件.列表框构件和复合框构件.所有建立按钮的函数返回指向GtkWidget的指针.GtkWidget指针能够调用对构件进行操作的通用函数.函数gtk_ ...
- GTK+图形化应用程序开发学习笔记
http://blog.chinaunix.net/u/22935/showart_305786.html 一.初始化GTK+ 写GTK+程序需要调用gtk_init函数对GTK+ 库函数进行初始化. ...
- GTK+图形化应用程序开发学习笔记(三)—窗体
一.初始化GTK+ 写GTK+程序需要调用gtk_init函数对GTK+库函数进行初始化. 1. 名称:: gtk_init 功能: 初始化GTK+库 头文件: #include <gtk/gt ...
- GTK+图形化应用程序开发学习笔记(二)—Glib库
在学习GTK+之前我们需要先学习一下 glib的有关知识.因为我们将会在以后的学习中遇到这些知识.由于本笔记不是专门介绍glib的,所以下面的介绍不会太详细. 一.什么是glib库 ...
- Polyworks脚本开发学习笔记(七)-完成一个自动化任务
Polyworks脚本开发学习笔记(七)-完成一个自动化任务 利用之前的命令建立一个自动化脚本 第一步: 设置环境参数 设置注释字体避免出现不兼容中文的乱码,常用微软雅黑 #设置注释字体 VIEW A ...
- 微信小程序开发学习笔记一
微信小程序学习笔记(一) 环境使用及创建项目 文件目录设置 JS文件 环境使用及创建项目 环境使用:微信开发者工具 一个微信号只能开发一个微信小程序. 在微信小程序开发手册下载最新版本,学习不要bet ...
最新文章
- linux usb摄像头 源码,Linux USB摄像头驱动实现源码分析
- 在win10下安装自带的linux,并进行相应的配置
- attempt to create delete event with null entity
- 计算机安全专家建议:尽快为电脑升级打补丁
- 景色宜人的openeim001
- SQL触发器 常用语句
- python怎么读取中文文件-Python3 解决读取中文文件txt编码的问题
- centos 卸载 jdk
- python 百度文库_百度文库文档下载地址解析python版【摸索不易,还请支持】
- 智慧教育教学案例分析
- MyEclipse2018安装破解教程
- android 状态栏显示 耳机图标显示,Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
- ROS AUV 启动
- matlab历史模拟法计算var,历史模拟法、蒙特卡罗模拟法计算VaR和ES值
- 【华人学者风采】汪玉 清华大学
- ORACLE 触发器控制用户登录之权限限制
- 西南大学844信号与系统考研经验(高分上岸学姐)
- ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin
- SimpleMind安装步骤
- ssm基于JavaEE的电脑销售管理系统设计与实现毕业设计源码
热门文章
- js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
- 用C#实现屏幕键盘!
- 福布斯评最佳与最差老板 TCL上黑榜
- 【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句
- dao-service-servlet-jsp构建简易web通讯录(三层开发)预备知识
- CentOS7 按nodejs和npm的方法
- php嵌入html代码的三种方法
- jq使用教程07_ JQData HTTP 接口正式上线
- ubuntu18机器学习环境安装基于anaconda
- 用数据说话,基金经理一年到底能挣多少钱?