Bonjour,
Je suis nouveau dans le monde de Gtk, je suis Ubuntu 8.04, bureau Gnome.
Je programme avec Code::Blocks et crée mes interface graphique avec Glade 3.
Donc pour commencer, j'ai eu dans l'idée de crée une petit Hello World, grand classique.
Sous glade, je crée ma fenêtre, avec un signal sur Destroy nommé : form1_fermeture, un bouton Afficher avec un signal sur l'événement click nommé : cmdAffich_click.
avec la commande
Je transforme mon fichier glade pour utiliser gtk builder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gtkbuilder Personnel.glade Personnel.xml
Voici le code xml :
Ensuite sous code::blocks, je crée un projet gtk, j'ajoute les options pour le compileur et le créateur de liens.
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
31
32
33
34
35 <?xml version="1.0"?> <!--Generated with glade3 3.4.5 on Tue Jun 10 22:52:38 2008 --> <interface> <object class="GtkWindow" id="form1"> <property name="title" translatable="yes">Personnel</property> <property name="destroy_with_parent">True</property> <signal handler="form1_fermeture" name="destroy"/> <child> <object class="GtkVBox" id="vbox1"> <property name="visible">True</property> <child> <object class="GtkLabel" id="lblAffich"> <property name="visible">True</property> </object> </child> <child> <object class="GtkButton" id="cmdAffich"> <property name="height_request">40</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="has_focus">True</property> <property name="receives_default">True</property> <property name="label" translatable="yes">Afficher</property> <signal handler="cmdAffich_click" name="clicked"/> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> <property name="position">1</property> </packing> </child> </object> </child> </object> </interface>
voici mon code C :
Pour l'instant, je n'ai programmé que la fermeture de l'application sur l'événement destroy.
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
31
32
33
34
35
36
37
38
39 #ifdef HAVE_CONFIG_H # include <config.h> #endif #include <stdlib.h> #include <gtk/gtk.h> //Déclaration d'une fonction d'interraction avec Gtk //void form1_fermeture (GtkObject *object, gpointer user_data); void form1_fermeture (GtkObject *object, gpointer user_data) { //Fermeture de l'application gtk_main_quit(); } //fichier Gtk+ de base int main(int argc, char **argv) { GtkBuilder *builder; GtkWidget *form1; gtk_init (&argc, &argv); builder = gtk_builder_new (); gtk_builder_add_from_file (builder, "Personnel.xml", NULL); form1 = GTK_WIDGET (gtk_builder_get_object (builder, "form1")); gtk_builder_connect_signals (builder, NULL); g_object_unref (G_OBJECT (builder)); gtk_widget_show (form1); gtk_main (); return EXIT_SUCCESS; }
Mais cela ne marche pas, la fenêtre se ferme mais cela n'arrête pas l'exécution du programme.
en effet la console m'affiche ceci :
(Personnel:7288): Gtk-WARNING **: Could not find signal handler 'form1_fermeture'
](Personnel:7288): Gtk-WARNING **: Could not find signal handler cmdAffich_click'
Je ne comprend pas pourquoi, le programme n'arrive pas à faire le lien.
Suite à la lecture de plusieurs tutoriel, je ne trouve pas le problème.
Quelqu'un le voit il ? Cela doit être basique.
Partager