改变控件字体大小:
- #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;
- }