2016-12-13 2 views
0

Als before,GTK + Set Schriftgröße

die MenuItems sind zu klein für meinen Anwendungsfall.
Daher ist meine Frage, „wie ich die Schriftgröße des Textes erhöhen‚Speichern‘,‚Load‘und‚Exit?‘“

Der folgende Code ist in der Lage, den Stil des sich ändern "Speichern" Text, außer dass es nicht möglich ist, die Schriftgröße zu ändern.

Wenn die ausführbare Datei ausgeführt wird, kommt die folgende Warnung auf:

Gtk-WARNING **: Theme parsing error: Styles.css:10:14: Junk at end of value 


Wenn die Leitung font-size: 25px; entfernt wird (oder kommentiert out), die Warnung verschwindet.

Diese wie font-size scheinen kann, ist in GTK + 3 nicht implementiert, aber es wird als gültige Eigenschaft aufgeführt bei
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15


So bleibt die Frage, " Wie erhöhe ich die Schriftgröße dieser Methode? "


Styles.css

/* 
    Valid Font Properties: 
     https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15 
*/ 

.Item_Save { 
    background: rgba(000, 255, 000, 1); 
    font-style: italic; 
    font-weight: 800; 
    font-size: 25px; 
    padding: 10px 10px 10px 10px; 
} 


C-Quelldatei

#include <gtk/gtk.h> 

int main (int argc, char *argv[]) { 
    gtk_init(&argc, &argv); 


    GtkCssProvider* Provider = gtk_css_provider_new(); 
    GdkDisplay* Display = gdk_display_get_default(); 
    GdkScreen* Screen = gdk_display_get_default_screen(Display); 

    gtk_style_context_add_provider_for_screen(Screen, GTK_STYLE_PROVIDER(Provider), GTK_STYLE_PROVIDER_PRIORITY_USER); 
    gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(Provider), "Styles.css", NULL); 


    GtkWidget* Window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 

    GtkWidget* MenuBar = gtk_menu_bar_new(); 
    GtkWidget* MenuItem_File = gtk_menu_item_new_with_mnemonic("_File"); 

    GtkWidget* SubMenu1 = gtk_menu_new(); 

    GtkWidget* Item_Save = gtk_menu_item_new_with_mnemonic("_Save"); 
    GtkWidget* Item_Load = gtk_menu_item_new_with_mnemonic("_Load"); 
    GtkWidget* Item_Exit = gtk_menu_item_new_with_mnemonic("_Exit"); 



    GtkStyleContext *Context; 
    Context = gtk_widget_get_style_context(Item_Save); 
    gtk_style_context_add_class(Context, "Item_Save"); 



    gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Save); 
    gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Load); 

    gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), gtk_separator_menu_item_new()); 

    gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Exit); 


    gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem_File), SubMenu1); 
    gtk_menu_shell_append(GTK_MENU_SHELL(MenuBar), MenuItem_File); 


    GtkWidget* VerticalBox; 

    VerticalBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); 

    gtk_box_pack_start(GTK_BOX(VerticalBox), MenuBar, false, false, 0); 
    gtk_container_add(GTK_CONTAINER(Window), VerticalBox); 


    gtk_widget_show_all(MenuBar); 
    gtk_widget_show(VerticalBox); 


    gtk_window_set_default_size(GTK_WINDOW(Window), 950, 600); 
    gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER); 
    gtk_window_set_title(GTK_WINDOW(Window), "My Title"); 

    gtk_widget_show(Window); 


    gtk_main(); 

    return 0; 
} 

Antwort

2

Sie könnten this bug schlagen werden. Es scheint, dass einige Versionen von Gtk3 die Schriftgröße und das Schriftbild ignorieren. Dieser Fehler wurde bei Ubuntu gemeldet, aber ich kann nicht finden, ob dies an das Gtk3-Team weitergeleitet wurde.

Auf der anderen Seite meldet der Gtk-Bug-Tracker eine related problem in Gtk.3.16+, die mit Ihrem Problem in Verbindung stehen könnte.

Ich werde versuchen, Ihr Programm hier zu kompilieren und Bericht zu erstatten.

Bericht:

Es scheint ganz gut hier zu arbeiten:

enter image description here

Bitte beachte, dass ich Gtk + Version 3.20.6 installiert haben. Beachten Sie auch, dass die ursprünglichen Schriftgrößen im Vergleich zum Fenstertitel ziemlich vernünftig aussehen ("Datei", "Laden" und "Beenden").

UPDATE: Von Ihrem Kommentar, ich nehme an, Sie sind immer noch auf Version 3.6.x. Es gibt große Unterschiede seit 3.6! Besonders die CSS-Implementierung ist merklich gereift. Nur von 3.18 bis 3.20 haben sich viele Dinge geändert. Ich bin mir ziemlich sicher, dass das Schriftgrößenproblem seit 3.6 gelöst wurde. (Nur überprüft - 3,6 ist fast 3 Jahre alt).Ein Indikator für die Änderungen des CSS-Systems ist, dass alle Gtk + "Themen" in jeder neuen Gtk + Version aktualisiert werden mussten.

+0

Ich benutze Linux (gab vor 20-ungerade Jahren auf Windows). Aber diese Probleme sollten nicht vom Betriebssystem abhängen, da Sie auf den Gtk + -Funktionen aufbauen, um Ihre Arbeit zu erledigen (und auf neu kompilierten Linux-Bibliotheken). Natürlich können die Windows-Ports von Gtk + mehrere Versionen hinter sich haben. Welche Gtk + Version hast du? – jcoppens

+0

Meine GTK + Version ist 3.6.4 viele Versionen hinter dem aktuellen. Ich sollte wahrscheinlich aktualisieren –

+1

Oohhh ... Sie * wirklich * sollte aktualisieren. Es gibt * große * Unterschiede seit 3.6! Besonders die CSS-Implementierung ist merklich gereift. Nur von 3.18 bis 3.20 haben sich viele Dinge geändert. Ich bin mir ziemlich sicher, dass das Schriftgrößenproblem seit 3.6 gelöst wurde. (Just checked - 3.6 ist fast 3 Jahre alt) – jcoppens