2016-12-13 1 views
0

Comme before,GTK + Set Font Size

les MenuItems sont trop petits pour mon cas d'utilisation.
Par conséquent, ma question est, « comment je peux augmenter la taille de police du texte « Enregistrer », « Load » et « Exit? » »

Le code ci-dessous est en mesure de changer le style de la "Enregistrer" le texte, sauf qu'il est impossible de modifier la taille de la police.

Lorsque l'exécutable est exécuté, l'avertissement suivant apparaît:

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


Lorsque la ligne font-size: 25px; est supprimée (ou commenté), l'avertissement disparaît.

Cela peut sembler font-size n'est pas implémenté dans GTK + 3, mais il est répertorié comme une propriété valide à
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15


La question reste, " comment puis-je augmenter la taille de la police en utilisant cette méthode? "


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 Source Fichier

#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; 
} 

Répondre

2

Vous pourriez frapper this bug. Il semble que certaines versions de Gtk3 ignorent la taille de police et le font-face. Ce bug a été rapporté à Ubuntu, mais je ne peux pas trouver si cela a été transmis à l'équipe Gtk3. D'autre part, le traqueur de bogues Gtk signale un related problem in Gtk.3.16+, ce qui peut être lié à votre problème.

Je vais essayer de compiler votre programme ici et de faire rapport.

Rapport:

Il semble fonctionner très bien ici:

enter image description here

Notez que j'ai la version Gtk + 3.20.6 installé. Notez également que les tailles de police d'origine semblent assez raisonnables («Fichier», «Charger» et «Quitter») par rapport au titre de la fenêtre.

MISE À JOUR: De votre commentaire, je suppose que vous êtes toujours sur la version 3.6.x. Il y a des différences énormes depuis 3.6! En particulier, la mise en œuvre CSS a sensiblement évolué. Juste de 3.18 à 3.20, beaucoup, beaucoup de choses ont changé. Je suis tout à fait sûr que le problème de taille de police a été résolu depuis 3.6. (Juste vérifié - 3.6 a presque 3 ans).Un indicateur pour les changements du système CSS, est qu'il était nécessaire de mettre à jour tous les «thèmes» de Gtk + dans chaque nouvelle version de Gtk +.

+0

J'utilise Linux (abandonné sur Windows il y a 20 ans). Mais ces problèmes ne doivent pas dépendre du système d'exploitation, car vous construisez sur les fonctions Gtk + pour faire votre travail (et sur les bibliothèques Linux recompilées). Bien sûr, les ports Windows de Gtk + pourraient être plusieurs versions derrière. Quelle version de Gtk + avez-vous? – jcoppens

+0

Ma version GTK + est 3.6.4 plusieurs versions derrière currrent. Je devrais probablement mettre à jour –

+1

Oohhh ... Vous * vraiment * devrait mettre à jour. Il y a des * énormes * différences depuis 3.6! En particulier, la mise en œuvre CSS a sensiblement évolué. Juste de 3.18 à 3.20, beaucoup, beaucoup de choses ont changé. Je suis tout à fait sûr que le problème de taille de police a été résolu depuis 3.6. (Juste vérifié - 3.6 a presque 3 ans) – jcoppens