2016-12-10 1 views
0

Sur une machine fonctionnant sous Windows, les éléments Menu sont trop petits pour mon cas d'utilisation.
GTK + MenuItem Taille Small

Par conséquent, ma question est, « comment je peux augmenter la taille de police du texte « Enregistrer », « Charger » et « Exit? » »

Sinon, comment puis-je augmenter le remplissage entre les MenuItems?
(sans ajouter plus de ces séparateurs de ligne comme on le voit entre « Load » et « Exit »)

De plus, comment puis-je supprimer la variable intermédiaire SubMenu1, si possible?


recadrée Screenshot

Cropper Screenshot



Ci-dessous est une source complète pour reproduire:

#include <gtk/gtk.h> 

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


    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"); 


    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

1

contrôle de la taille de la police de gtk3 (et d'autres propriétés de style) sont déléguées aux fichiers CSS. Il est généralement déconseillé de le faire dans votre programme (bien que cela soit certainement possible - jetez un œil aux fonctions CSS_provider de Gtk3). Mais normalement, vous voudriez que votre programme semble "compatible" avec d'autres programmes, je suppose.

La raison en est que l'aspect de votre programme devrait être contrôlable de l'extérieur - que ce soit pour des raisons de goût personnel ou d'accessibilité. Donc, si vous considérez le style de police pour les menus etc, trop petit, vous pouvez:

  • Choisissez un autre 'thème' ou style, par ex. sur la Gnome-Look site
  • Regardez les préférences du gestionnaire de fenêtre pour un paramètre « Apparence » (comme on l'appelle dans XFCE. Il existe des outils similaires dans Gnome, KDE, etc.)
  • Modifier les fichiers CSS du thème que vous êtes En utilisant

De nombreux autres aspects visuels sont contrôlés à partir des fichiers CSS: Séparation entre les éléments (par exemple menuitems), arrondi des coins, effets visuels, etc etc ... mais, grâce au système CSS, vous pouvez normalement juste "tweak" les articles que vous aimez. Si vous voulez exécuter l'exécutable sur une autre machine, vous auriez probablement besoin d'un gestionnaire de fenêtres pour l'exécuter, ce qui rend ce qui précède encore valide.

Il existe encore une autre solution (que j'ai mentionnée ci-dessus, premier paragraphe), qui consiste à modifier temporairement le CSS en utilisant le CSS provider set of Gtk functions. Si vous vraiment voulez coder le programme de manière rigide, vous pouvez utiliser la méthode modify_font de GtkWidget.

+0

Voir modifier le message d'origine ci-dessus – jcoppens