您的位置:首页 > 其它

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

2009-04-21 22:21 423 查看
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;
}
运行程序会得到如下结果:
jtype的值可以是:



二、事件盒构件
事件盒构件(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程序退出。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐