2017-12-29 41 views
1

私はGTK3ウィンドウにラベルを追加し、ラベルのフォントサイズを設定しようとしています。ここに私の試みです:Pango属性でラベルのフォントサイズを設定するにはどうすればいいですか?

#include <gtk/gtk.h> 

static void 
add_label (GtkWidget* window, gchar *text) 
{ 

    GtkWidget *label = gtk_label_new(text); 
    PangoAttrList *attrlist = pango_attr_list_new(); 
    PangoAttribute *attr = pango_attr_size_new_absolute(20); 
    pango_attr_list_insert(attrlist, attr); 
    gtk_label_set_attributes(GTK_LABEL(label), attrlist); 
    pango_attr_list_unref(attrlist); 
    gtk_container_add (GTK_CONTAINER (window), label); 
} 

static void 
activate (GtkApplication* app, 
      gpointer  user_data) 
{ 
    GtkWidget *window; 

    window = gtk_application_window_new (app); 
    gtk_window_set_title (GTK_WINDOW (window), "Window1"); 
    gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); 
    add_label(window, "Hello world"); 
    gtk_widget_show_all (window); 
} 

int 
main (int argc, char **argv) 
{ 
    GtkApplication *app; 
    int status; 

    app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); 
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); 
    status = g_application_run(G_APPLICATION(app), argc, argv); 
    g_object_unref (app); 

    return status; 
} 

これは全くラベルを生成しません。私がラインをコメントアウトすると:

gtk_label_set_attributes(GTK_LABEL(label), attrlist); 

ラベルは表示されますが、フォントサイズは設定されていません。

+0

これは、あなただけのCSSを使用する必要があります別の理由です。 :) –

答えて

2

ここにはPANGO_SCALEがありません。

PangoAttribute *attr = pango_attr_size_new_absolute(20 * PANGO_SCALE); 

これはあなたの望ましい結果を与える必要があります。

enter image description here

+0

偉大な、これは動作します!私はパンゴのスケーリングを認識していませんでした。 –

+1

[ドキュメント](https://developer.gnome.org/pango/stable/pango-Text-Attributes.html#pango-attr-size-new-絶対)は、 'size:font size、PANGO_SCALEths ofデバイス単位.'、なぜあなたは掛けなければならないのでしょうか。 –

関連する問題