IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

gtk+ et Glade : Coudnt find signal handler


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 1
    Points : 2
    Points
    2
    Par défaut gtk+ et Glade : Coudnt find signal handler
    salut à tous ,

    je cherche à trouver une solution à ce probléme à cause des signaux , je travaille sur windows 7 , et j'ai suit les étapes comme ils font , voila mon glade et mon code source :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    #include <gtk/gtk.h>
    GtkWidget *g_lbl_hello;
    GtkWidget *g_lbl_count;
     
    int main(int argc, char *argv[])
    {
        GtkBuilder      *builder;
        GtkWidget       *window;
     
        gtk_init(&argc, &argv);
     
        builder = gtk_builder_new();
        gtk_builder_add_from_file (builder, "window_main.glade", NULL);
     
        window = GTK_WIDGET(gtk_builder_get_object(builder, "windows_main"));
        gtk_builder_connect_signals(builder, NULL);
     
        // get pointers to the two labels
        g_lbl_hello = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_hello"));
        g_lbl_count = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_count"));
     
        g_object_unref(builder);
     
        gtk_widget_show(window);
        gtk_main();
     
        return 0;
    }
     
    // called when button is clicked
     
    void on_btn_hello_clicked()
    {
        static unsigned int count = 0;
        char str_count[30] = {0};
     
        gtk_label_set_text(GTK_LABEL(g_lbl_hello), "Hello, world!");
        count++;
        sprintf(str_count, "%d", count);
        gtk_label_set_text(GTK_LABEL(g_lbl_count), str_count);
    }
     
    // called when window is closed
    void on_window_main_destroy()
    {
        gtk_main_quit();
    }
    Nom : glade.JPG
Affichages : 1247
Taille : 59,6 KoNom : glade.JPG
Affichages : 1247
Taille : 59,6 Ko

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Avant tout tu ne respectes pas le prototype d’un callback associé au signal «*clicked*».

    https://developer.gnome.org/gtk3/sta...Button-clicked

    Modifie-le et reviens nous voir si le probleme Persiste.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour,

    bon, je pense que tu as un peu de travail devant toi, il y a quelques erreurs dans ton programme, que tu vas devoir corriger au fur et à mesure.

    Tout d'abord, comme Gerald3d te l'a déjà indiqué, tu as besoin de respecter la signature d'une callback associée à un signal. Elle doit être exactement du type attendu: même paramètres d'entrée, dans le même ordre, et même paramètre de sortie. Pour cela, il n'y a pas de secrets : tu ne peux pas les inventer, il faut les lire dans la documentation. Par exemple pour le signal "clicked" d'un GtkButton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void user_function (GtkButton *button, gpointer   user_data)
    Donc tu dois déclarer ta fonction on_btn_hello_clicked ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void on_btn_hello_clicked (GtkButton *button, gpointer   user_data)
    En ce qui concerne ton erreur initiale: "Couldn't find signal handler", elle provient d'une différence de fonctionnement entre les linkers sous Windows et Linux. Sous Linux, les symboles sont publics et exportés par défauts. Sous Windows, ils sont privés et ne sont exportés que si tu le demandes explicitement. Tu dois donc, pour toutes les fonctions de callback que tu utilises dans ton fichier glade, préfixer leur implémentation dans le fichier .c par G_MODULE_EXPORT. Cela ne changera rien sous Linux, mais sous Windows cela permet d'exporter la fonction pour qu'elle puisse être trouvée.
    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)

Discussions similaires

  1. Gtk - Warning: Could Not Find Signal Handler
    Par shumprevers dans le forum GTK+
    Réponses: 36
    Dernier message: 04/12/2014, 14h30
  2. Erreur could not find signal handler
    Par moncef363 dans le forum GTK+
    Réponses: 4
    Dernier message: 06/06/2013, 14h08
  3. Gtk-WARNING **: Could not find signal handler
    Par yostane dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 24/11/2008, 14h07
  4. Réponses: 17
    Dernier message: 10/10/2006, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo