b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pango markup GTK里的label控件 颜色 大小 等

电脑杂谈  发布时间:2017-06-08 16:01:47  来源:网络整理
pango markup

用过之后,你将会发现GTK里的label控件比windows系统的label功能强大很多,很多.

与此同时,使用起来感觉也麻烦很多.

首先,在hello world的基础上添加一点代码.

这里,添加了一个GtkWidget变量 *lblTest;

就是我们的label.

然后lblTest = gtk_label_new("label for test!");

这里就相当于Windows编程中的create,创建了一个TLabel,当然这里是GtkLabel.参数就是lable的Caption

然后gtk_container_add(GTK_CONTAINER(frmMain), lblTest);

这里相当于Windows编程中的setparent,将这个label置于一个交窗口中,否则它不知道应该显示在哪里.

最后多了一行gtk_widget_show(lblTest);

与gtk_widget_show (frmMain);一样,相当于WIndows中的setVisible(*,TRUE);有了此句,才会显示出此控件.

*排版;

1.长度.

这里的label控件大多没有类似vc,delphi中setwidth,setheight的方法.

甚至Label这里基本没有width,height这个属性。

要改变宽度只有一个方法gtk_label_set_width_chars(GTK_LABEL(lblTest), 20);

设定label可以显示多少个字符,从而调整label的长度.

如果你做过java,则不用急于了解这些,因为gtk的排版与java类似,后面会有介绍.

2.对齐.

对齐的方法应该是gtk_label_set_justify(GTK_LABEL(lblTest), GTK_JUSTIFY_LEFT);

但我试了一下不起作用,这里介绍一个更强大的对齐方法.

gtk_misc_set_alignment(GTK_MISC(lblTest), 1, 0);

第一个参数是lblTest,第二个参数是左右方向的对齐值,第三个参数是上下方向的对齐值;

对齐值的取值范围为0-1.取0时,为左对齐,取1时,为右对齐,取0.5时,为中间对齐.

当然,你也可以取0.3,0.8试一下.这可是我从来没见过的对齐方式.

*其它属性;

1.可选.

windows中标准label是不可以做任何操作的,这里可以给label做一个可选设定,用户可以用鼠标选择并进行复制等操作.

gtk_label_set_selectable (GTK_LABEL(lblTest), TRUE);2.字体,大小,颜色.

这里的设置比较麻烦一点,GTKLABEL本身并没有提供直接的方法来操作这些属性,其它库的操作方法见后面补充。pango markup

而是提供了一种类似html浏览器的方法,需要在代码中设定.

如:

这里的<span>标签就是用来操作label显示的属性的,包括背景色,字体色,字体,字体大小,下划线,等等.

其中foreground='red' 就是定义前景色(字体颜色)为红色,也可以foreground='#00FF00',这两个值是相等的.

underline='double' 是下划线为双线,还可以设值为'none', 'single', 'double', 'low', 'error' 等.

underline_color='blue' 是下划线的颜色.

此外,还可以选的属性有:

font_desc 字体大小,值如'12',官方文档说明为字体描述,但我测试结果为字体大小

size 官方文档为字体大小,但我测试结果不起作用.

stype 样式,值如'normal', 'oblique', 'italic' 等.

weight 字型,值如'ultralight', 'light', 'normal', 'bold', 'ultrabold'等

stretch 拉伸,值如'ultracondensed', 'extracondensed', 'condensed','semicondensed', 'normal', 'semiexpanded', 'expanded', 'extraexpanded','ultraexpanded'

属性值不一一列出,你可以参考安装时程序携带的文档,相对位置为"share/gtk-doc/html/pango/PangoMarkupFormat.html"

注意:官方文档中有好多错误,可以参考但不可全信.

主要内容如下:

整体看起来这个label就像是一个特定功能的webBrowse.

尽管功能比较强大,但给我们动态控制label属性带来很大的麻烦.

*事件

GtkLabel提供了三个事件:move_cursor,copy_clipboard, populate_popup.

第一个事件为光标移动事件。第二个是内容被复制.

第一个我测试了好长时间,没有触发,而且头文件中函数原型与官方文档定义不符.

第二个测试成功,当我选择label中内容并复制后,窗体的标题被修改.

总代码如下:

补充:

良久之后,才发现,原来可以用pango和gdk库来操作label的颜色,字体,大小等.

其实不仅仅是label,其它的一些gtk控件也可以用同样的方法操作.

看代码:

比之前多引用了两个头文件:gdk和pango.

用gtk_widget_modify_fg函数来改变控件的前景色,用gtk_widget_modify_font来改变控件的字体(包含字体大小).

当然,在makefile中别忘了也要加上这两个库文件:gdk-win32-2.0.lib和pango-1.0.lib.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-51836-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...