改变控件字体大小:

    #include <gtk/gtk.h>
    
     /* 功能:      设置控件字体大小
      * widget:    需要改变字体的控件
      * size:      字体大小
      * is_button: TRUE代表控件为按钮,FALSE为其它控件
      */
    static void set_widget_font_size(GtkWidget *widget, int size, gboolean is_button)
    {
        GtkWidget *labelChild;  
        PangoFontDescription *font;  
        gint fontSize = size;  
    
        font = pango_font_description_from_string("Sans");          //"Sans"字体名   
        pango_font_description_set_size(font, fontSize*PANGO_SCALE);//设置字体大小   
    
        if(is_button){
            labelChild = gtk_bin_get_child(GTK_BIN(widget));//取出GtkButton里的label  
        }else{
            labelChild = widget;
        }
    
        //设置label的字体,这样这个GtkButton上面显示的字体就变了
        gtk_widget_modify_font(GTK_WIDGET(labelChild), font);
        pango_font_description_free(font);
    }
    
    int main( int argc, char *argv[])
    {
        gtk_init(&argc, &argv);
    
        //主窗口操作
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    
        gtk_window_set_title(GTK_WINDOW(window), "改变控件字体大小");
        gtk_container_set_border_width(GTK_CONTAINER(window), 10);
        gtk_widget_set_size_request(window, 500, 450);
    
        GtkWidget *vbox = gtk_vbox_new(TRUE, 5);    // 创建垂直布局
        gtk_container_add(GTK_CONTAINER(window), vbox);    // 把布局放在窗口里
    
        // 改变标签字体大小,参数为 FALSE
        GtkWidget *label = gtk_label_new("I am a label");    // 标签
        set_widget_font_size(label, 50, FALSE);            // 设置标签字体大小
        gtk_container_add(GTK_CONTAINER(vbox), label);    
    
        // 改变按钮字体大小,参数为 TRUE
        GtkWidget *button = gtk_button_new_with_label("I am a button");
        set_widget_font_size(button, 50, TRUE);        // 改变按钮字体大小
        gtk_container_add(GTK_CONTAINER(vbox), button);    
    
    
        gtk_widget_show_all(window); // 显示所有部件
    
        gtk_main();
    
        return 0;
    }

    程序运行效果图如下:

    27_改变控件字体大小 - 图1