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

来源:互联网 发布:手机qq数据越来越大 编辑:程序博客网 时间:2024/04/28 08:55

改变控件字体大小:

[cpp] view plaincopy在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. }  


程序运行效果图如下:


源代码下载请点此处。

5 0