Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

taille de bouton fixe


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club
    taille de bouton fixe
    Bonjour,

    comment imposer la taille d'un bouton, même si je change le label?

    J'ai crée l'interface avec Glade.

    Mon appli est un GtkWindow, contenant un GtkGrid, dont les cellules contiennent, par exemple, des GtkButton.
    Le GtkGrid est "homogène".
    Je m'étais dis, mon Gtk Window a une taille fixe, si mon GtkGrid est homogène, la largeur des cellules est fixe aussi. Un de mes GtkButton est instancié avec le label: "nouvelle mesure"
    Or, si je met à jour le label avec un string plus grand, le GtkButton s'élargit, sa cellule aussi, toutes les cellules aussi car homogène, le Gtkgrid aussi et le GtkWindow aussi (pourtant non redimensionnable dans les options sous glade)

    Puis-je figer la taille des GtkButton, mais en fait plus généralement de tous les GtObjects, y compris le GtkWindow? (quitte à recevoir une erreur si je veux écrire un label trop grand.)

  2. #2
    Modérateur

    Bonjour,

    pour commencer, je vais rappeler quelque chose d'important: les interfaces à taille fixe, c'est le mal.
    On a passé les 15 dernières années a essayer d'en sortir. Les gestionnaires de fenêtres permettent de nos jours de coller des fenêtres au bord de l'écran, et les applications doivent s'adapter à l'utilisateur, pas l'inverse.

    Ceci étant dit, tu peux regarder du côté de la propriété hexpand de ton boutton:
    https://developer.gnome.org/gtk3/sta...e/ch30s02.html

    Tu peux sans doute récupérer le label et remplacer le texte en trop par des points de suspension:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    GtkWidget *label = GTK_BIN(button)->child;
    gtk_label_set_elipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);

    Si tu as accès au GtkLabel à l'intérieur du GtkButton dans Glade, tu dois pouvoir configurer l'ellipsize mode directement là bas.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Membre du Club
    tous mes objets ont des hexpand et vexpand false, effectivement réglés dans glade (enfin ils n'apparaissent pas dans le xml, false étant la valeur par défaut)
    et ça bouge quand même si je met du texte trop long

    je vais peut être essayé l'ellipsize, pas dispo dans glade, mais je crois que le mieux finalement est de prévoir des boutons suffisament larges pour que les différents label passent dedans sans demander plus de place.
    Parceque si je ne veux pas que ça s'élargisse quand le texte dépasse, ça veut dire que j'admets de perdre un bout de texte : bof bof

  4. #4
    Modérateur

    Dans ce cas réfléchit à:
    • soit utiliser un texte plus direct et plus court pour ton bouton
    • ou mettre un message explicatif en dehors du bouton, et un texte court dans le bouton
    • ou si c'est vriament long comme explication, ajoute un bouton d'aide pour expliquer comment utiliser ton application


    Dans tous les cas, utiliser un verbe d'action pour ton bouton, et suis autant que possible les HIG (guide de règles de conception d'interface graphique) de GNOME:
    https://developer.gnome.org/hig/stable/

    Voici par exemple ce qu'ils disent sur les boutons:
    https://developer.gnome.org/hig/stab...uttons.html.en
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)