改变控件字体大小:
#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;
}
程序运行效果图如下: