GTK进阶学习:改变控件字体大小

改变控件字体大小:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include <gtk/gtk.h>  
  2.   
  3.  /* 功能:      设置控件字体大小 
  4.   * widget:    需要改变字体的控件 
  5.   * size:      字体大小 
  6.   * is_button: TRUE代表控件为按钮,FALSE为其它控件 
  7.   */  
  8. static void set_widget_font_size(GtkWidget *widget, int size, gboolean is_button)  
  9. {  
  10.     GtkWidget *labelChild;    
  11.     PangoFontDescription *font;    
  12.     gint fontSize = size;    
  13.   
  14.     font = pango_font_description_from_string("Sans");          //"Sans"字体名     
  15.     pango_font_description_set_size(font, fontSize*PANGO_SCALE);//设置字体大小     
  16.   
  17.     if(is_button){  
  18.         labelChild = gtk_bin_get_child(GTK_BIN(widget));//取出GtkButton里的label    
  19.     }else{  
  20.         labelChild = widget;  
  21.     }  
  22.   
  23.     //设置label的字体,这样这个GtkButton上面显示的字体就变了  
  24.     gtk_widget_modify_font(GTK_WIDGET(labelChild), font);  
  25.     pango_font_description_free(font);  
  26. }  
  27.   
  28. int main( int argc, char *argv[])  
  29. {  
  30.     gtk_init(&argc, &argv);  
  31.   
  32.     //主窗口操作  
  33.     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
  34.   
  35.     gtk_window_set_title(GTK_WINDOW(window), "改变控件字体大小");  
  36.     gtk_container_set_border_width(GTK_CONTAINER(window), 10);  
  37.     gtk_widget_set_size_request(window, 500, 450);  
  38.   
  39.     GtkWidget *vbox = gtk_vbox_new(TRUE, 5);    // 创建垂直布局  
  40.     gtk_container_add(GTK_CONTAINER(window), vbox); // 把布局放在窗口里  
  41.   
  42.     // 改变标签字体大小,参数为 FALSE  
  43.     GtkWidget *label = gtk_label_new("I am a label");   // 标签  
  44.     set_widget_font_size(label, 50, FALSE);         // 设置标签字体大小  
  45.     gtk_container_add(GTK_CONTAINER(vbox), label);    
  46.   
  47.     // 改变按钮字体大小,参数为 TRUE  
  48.     GtkWidget *button = gtk_button_new_with_label("I am a button");  
  49.     set_widget_font_size(button, 50, TRUE);     // 改变按钮字体大小  
  50.     gtk_container_add(GTK_CONTAINER(vbox), button);   
  51.   
  52.   
  53.     gtk_widget_show_all(window); // 显示所有部件  
  54.   
  55.     gtk_main();  
  56.   
  57.     return 0;  
  58. }  


程序运行效果图如下:


源代码下载请点此处。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值