2 votes

Obtenir une taille de widget agréable dans MonoDevelop (Gtk#)

EDITAR: Cliquez ici pour le code .

J'expérimente donc la construction d'interfaces avec MonoDevelop (version 2.4). J'essaie de m'habituer au concept Gtk de "conteneurs dans des conteneurs". J'ai créé une vbox avec deux... euh... boîtes, j'ai mis un menu sur la boîte du haut, et une table sur celle du bas. J'ai configuré la table pour qu'elle ait deux colonnes et cinq rangées. Sur les quatre lignes du haut, je mets une étiquette à gauche et une entrée à droite. Dans la cellule inférieure droite, j'ai mis un bouton. Cela ressemble à ceci :

GUIBlah Application

Voici les choses avec lesquelles je me bats :

1) Comment faire pour que les colonnes du tableau ne soient PAS de même largeur ? Curieusement, lorsque je n'ai ajouté que les étiquettes et que je n'ai pas encore ajouté les zones de saisie, la colonne de gauche n'utilisait que l'espace nécessaire pour les étiquettes. Maintenant, c'est 50/50 et ça ne bouge pas.

2) Comment faire pour que les étiquettes soient alignées à droite et que le " :" final de leur texte soit bien aligné et proche des boîtes de saisie ? J'ai défini la propriété "Justify" des étiquettes sur "Right" et j'ai apparemment été ignoré.

3) Le code d'action pour les actions "Ouvrir" et "Fermer" du menu "Fichier" consiste à afficher une boîte de message modale avec un bouton OK. Mais le fait d'appuyer sur le bouton OK ne fait pas disparaître la boîte de message, seule la fermeture de la fenêtre de la boîte de message le fait. Le code est le suivant :

(new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok,
                  "Open Action")).Show();

4voto

mhutch Points 13238

1) Configurez au moins l'un des widgets d'entrée pour qu'il soit "étendu" et "rempli" horizontalement.

2) Définissez la propriété Xalign de l'étiquette sur 1.0. Justify contrôle la disposition du texte enveloppé, Xalign/Yalign contrôle la position de l'ensemble du bloc dans la zone de l'étiquette.

3) Vous devez détruire() la boîte de dialogue lorsque vous avez fini de l'utiliser. Sinon, vous pouvez le cacher et le réutiliser. Vous devriez également envisager d'utiliser la méthode Run() du dialogue - typiquement quelque chose comme :

var dialog = new FooDialog(...);
try {
    dialog.Show();
    var response = (ResponseType) dialog.Run ();
    if (response == ResponseType.Ok) {
        //do stuff
    }
} finally {
    dialog.Destroy ();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X