Bonjour!
J'utilise glade pour faire des interfaces graphique; jaimerai savoir comment rendre invisible un GtkEntry lorsqu'on affiche la fenetre le contenant et comment faire pour le réafficher quand on clique sur un bouton.
D'avance merci!
Bonjour!
J'utilise glade pour faire des interfaces graphique; jaimerai savoir comment rendre invisible un GtkEntry lorsqu'on affiche la fenetre le contenant et comment faire pour le réafficher quand on clique sur un bouton.
D'avance merci!
Bonjour,
Soit tu utilise la fonction gtk_widget_hide après avoir affiché la fenêtre, soit tu utilise gtk_widget_no_show_all avant de faire appel à la fonction gtk_widget_show_all.
Pour le réafficher, il suffit d'utiliser la fonction gtk_widget_show.
bonjour!
j'ai utilisé gtk_widget_hide mais je n'arrive toujours pas.
voici mon code
quand je clique sur buttonOK la zone de texte entry1 devait disparaitre mais c'est plutot le bouton qui disparait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 g_signal_connect (gtk_builder_get_object (p_builder, "buttonOK"), "clicked", G_CALLBACK (gtk_widget_hide), (gpointer) (GtkWidget*)(gtk_builder_get_object (p_builder, "entry1")) );![]()
Oui, le callback sera appelé avec comme premier argumetn l'objet qui a reçu le signal, c'est à dire le bouton, donc gtk_widget_hide est appelé avec le bouton comme argument, donc le bouton disparaît. Essaie avec g_signal_connect_swapped
g_signal_connect_swapped marche bien
J'ai ajouter un GtkSpinButton a ma fenetre. a la compilation j'ai pas d'erreur mais quand, j'exécute le programme,j'ai ceci commme erreur
cela peut être du à quoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part (a.out:10039): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
l'erreur était due aux paramètres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 page_increment page_size je les ai tous mis à zéro et ça passe sans problème.
Excusez moi je reviens sur le probleme ci dessous.
.
la solution est
Maintenant j'aimerai savoir comment procerder pour rendre invisible plus d'un GTKENTRY.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) (GtkWidget*)(gtk_builder_get_object (p_builder, "entry1")));
Monidée c'est de créer une fonction que j'appelerai dans le G_CALLBACK .Seulement je ne sais pas quoi mettre dans le dernier paramètre de g_signal_connect_swapped
Bonjour teuf13.
J'ai vu la faq mais je ne comprend pas très bien.
Voici ce que j'ai pu faire
Ce n'est pas très professionnel car pour chaque GTKENTRY je fais un crée un signal g_signal_connect_swapped
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 GtkWidget * p_win00 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element40"); GtkWidget * p_win01 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element41"); GtkWidget * p_win02 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element42") GtkWidget * p_win03 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element43"); GtkWidget * p_win04 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element44"); g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) p_win00); g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) p_win01); g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) p_win02); g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) p_win03); g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide), (gpointer) p_win04);![]()
La FAQ dit de mettre tous tes widgets dans une structure (un tableau conviendrait aussi dans ton cas) et d'utiliser un pointeur sur cette structure comme argument "utilisateur" à g_signal_connect. Ensuite, tu écris toi même un callback qui va récupérer les widgets dans la structure et appelle gtk_widget_hide sur chacun de ces widgets.
Bonsoir!
Je comprend maintenant l'idée générale du tuto;seulement il y'a quelque zone d'ombre:
code du tuto:
D'abord au niveau du main je ne comprend pas cette déclaration:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 /* Notre classe MyWindow héritant de GtkWindow */ typedef struct { GtkWindow parent; /* Les widgets composant notre fenêtre que nous souhaitons cacher */ GtkWidget* widget1; Gtkwidget* widget2; } MyWindow; /* Notre fonction qui cache les differents elements */ void hide_element (GtkWidget* sender, gpointer data) { /* On commence par récuperer l'instance de notre classe */ MyWindow* self = data; gtk_widget_hide (self->widget1); gtk_widget_hide (self->widget2); } int main (int argc, char** argv) { GtkWidget my_window = my_window_new (); GtkWidget button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (hide_element), my_window); /* ... */ }
Ensuite lorsque je compile j'ai cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part GtkWidget my_window = my_window_new ();
et efin je ne voie pas le rapport entre la structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part undefined reference to `my_window_new'
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { GtkWindow parent; /* Les widgets composant notre fenêtre que nous souhaitons cacher */ GtkWidget* widget1; Gtkwidget* widget2; } MyWindow;
Code : Sélectionner tout - Visualiser dans une fenêtre à part my_window
Partager