资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
GTK+2.0-杂项构件(1)GTK+2.0 2008-12-13 12:48:25 阅读933 评论0 字号:大中小订阅 标签构件GtkLabelG t k L a b e l (标签构件)是G T K中最常用的构件,实际上它很简单。因为没有相关联的X窗口,标签构件不能引发信号。如果需要引发信号,可以将它放在一个事件盒构件中,或放在按钮构件里面。用以下函数创建新标签构件:GtkWidget *gtk_label_new(char *str );唯一的参数是要由标签显示的字符串。创建标签构件后,要改变标签内的文本,用以下函数:void gtk_label_set_text( GtkLabel *lacbel,char *str );第一参数是前面创建的标签构件(用G T K _ L A B E L ( )宏转换),并且第二个参数是新字符串。如果需要,新字符串需要的空间会做自动调整。在字符串中放置换行符,可以创建多行标签。用以下函数取得标签的当前文本:void gtk_label_get( GtkLabel *Label,char *str );第一个参数是前面创建的标签构件,并且第二个参数是要返回的字符串。不要释放返回的字符串,因为G T K内部要使用它。标签的文本可以用以下函数设置对齐方式:void gtk_label_set_justify( GtkLabel *Label,GtkJustification jtype );j t y p e的值可以是:GTK_JUSTIFY_LEFT 左对齐GTK_JUSTIFY_RIGHT 右对齐GTK_JUSTIFY_CENTER 居中对齐(默认)GTK_JUSTIFY_FILL 充满标签构件的文本会自动换行。用以下函数激活“自动换行”:void gtk_label_set_line_wrap (GtkLabel *Label, gboolean wrap);w r a p参数可取T R U E或FA L S E,对应于自动换行和不自动换行。如果想要使标签构件加下划线,可以在标签构件中设置显示模式:void gtk_label_set_pattern (GtkLabel *Label,const gchar *pattern);p a t t e r n参数指定下划线的外观。它由一串下划线和空格组成。下划线指示标签的相应字符应该加一个下划线。例如, “ ”将在标签的第1、第2个字符和第8、第9个字符加下划线。下面是一个说明这些函数的短例子。这个例子用框架构件能更好地示范标签的风格。/* GtkLabel示例开始label.c */#include int main( int argc,char *argv )static GtkWidget *window = NULL;GtkWidget *hbox;GtkWidget *vbox;GtkWidget *frame;GtkWidget *label;/* 初始化GTK */gtk_init(&argc, &argv);window = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_signal_connect (GTK_OBJECT (window), destroy,G T K _ S I G N A L _ F U N C ( g t k _ m a i n _ q u i t ) ,N U L L ) ;gtk_window_set_title (GTK_WINDOW (window), Label);vbox = gtk_vbox_new (FALSE, 5);hbox = gtk_hbox_new (FALSE, 5);gtk_container_add (GTK_CONTAINER (window), hbox);gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);gtk_container_set_border_width (GTK_CONTAINER (window), 5);frame = gtk_frame_new (Normal Label);label = gtk_label_new (This is a Normal label);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);frame = gtk_frame_new (Multi-line Label);label = gtk_label_new (This is a Multi-line label.nSecond linenThird line);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);frame = gtk_frame_new (Left Justified Label);label = gtk_label_new (This is a Left-Justifiedn Multi-line label.nThird line);gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);frame = gtk_frame_new (Right Justified Label);label = gtk_label_new (This is a Right-JustifiednMulti-line label.n Fourth line, (j/k);gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);vbox = gtk_vbox_new (FALSE, 5);gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);frame = gtk_frame_new (Line wrapped label);label = gtk_label_new (This is an example of a line-wrapped label. It should not be taking up the entire /* 一大段空格,用来测试间距* / width allocated to it, but automatically wraps the words to fit. The time has come, for all good men, to come to the aid of their party. The sixth sheiks six sheep s sick.n It supports multiple paragraphs correctly, and correctly adds many extra spaces. );gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);frame = gtk_frame_new (Filled, wrapped label);label = gtk_label_new (This is an example of a line-wrapped, filled label It should be taking up the entire width allocated to it. Here is a sentence to prove my point. Here is another sentence. Here comes the sun, do de do de do.n This is a new paragraph.n This is another newer, longer, better paragraph. It is coming to an end, u n f o r t u n a t e l y . ) ;gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_FILL);gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);frame = gtk_frame_new (Underlined label);label = gtk_label_new (This label is underlined!nThis one is underlined in quite a funky fashion);gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);gtk_label_set_pattern (GTK_LABEL (label),_ _ _ _ _ _ _ _);gtk_container_add (GTK_CONTAINER (frame), label);gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);gtk_widget_show_all (window);gtk_main ();r e t u r n ( 0 ) ;/* 示例结束* /图9 - 1是上面代码的运行结果。这个例子展示了G t k L a b e l构件的各种属性。 图9-1 标签构件箭头构件GtkArrowG t k A r r o w (箭
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号