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 :

passer plusieur pointeur dans un signal connect


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut passer plusieur pointeur dans un signal connect
    bonsoir

    je n'arrive pas a psser plusieur pointeur dans un g_signal_connect

    ex> signal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect(G_OBJECT(Button1), "clicked", G_CALLBACK(Selection_de_fichier),Label1,Label2);
    la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Selection_de_fichier(GtkWidget * Widget, gpointer dataA, gpointer dataB)
    {
    creation d'une fenetre de selection de fichier et recuperation du chemin du fichier
     
    modification du contenu du Label1 avec
    gtk_label_set_label(data, chemin);
    fonctionne avec 1 pointer mais pas avec 2 pointer
    }
    merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut
    deja vu!

    mes widget sont deja declares ! pas compilation
    a quoi sert my_window_new() ? pas trouver info sur google

    un notre conseil a me donner ?

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par lrgtk Voir le message
    deja vu!

    mes widget sont deja declares ! pas compilation
    Bin montre ton code alors sinon on pourra rien pour toi. Au moins le code qui cible le problème si le code est trop gros mais qu'il reste compilable, au pire fait un petit programme factice qui montre le problème !

    Citation Envoyé par lrgtk Voir le message
    a quoi sert my_window_new() ? pas trouver info sur google
    Ca.. ... bin c'est juste un exemple ! L'auteur illustre simplement l'appel d'une fonction créant une fenêtre par rapport à la classe qu'il a déclaré par le biais d'une structure, c'est factice rien de plus !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    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
    Par défaut
    Citation Envoyé par lrgtk Voir le message
    mes widget sont deja declares ! pas compilation
    Ce qui signifie ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut
    dans l'exemple : Comment passer plusieurs paramètres à une fonction callback ?
    les widget sont declare dans la structure

    mes widget sont deja declare et utiliser avant la structure

    si vous pouvez donne un exemple sa m'aiderais à comprendre !

  7. #7
    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
    Par défaut
    Bon, c'est vrai que l'exemple de la FAQ est assez pourri et contient en plus plein d'erreurs. Ta question revient souvent sur le forum, c'est donc que l'exemple n'est pas clair. Si un modérateur passe par là, il vaudrait mieux le remplacer.

    Voilà un programme qui inverse les lettres du titre de la fenêtre quand on clique sur un bouton. Cela montre comment accéder à n'importe quel membre de la structure qui contient tes éléments graphiques (et ou d'autres données d'ailleurs).

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <gtk/gtk.h>
     
    /* Structure regroupant tous les éléments de l'interface graphique 
     * GUI (Graphical User Interface) = IHM (Interface Homme Machine)
     * Vos fenêtres quoi :-) */
    typedef struct
    {
    	GtkWidget* main_window;  /* La fenêtre principale */
    	GtkWidget* button;       /* Un bouton */
    } Gui;
     
    /* La fonction de rappel (callback) appelée quand on clique sur le bouton */
    static void on_button_clicked (GtkButton *button, gpointer user_data)
    {
    	/* On commence par récuperer le pointeur vers notre interface graphique.
    	 * De cette manière on peut accéder à tout le contenu de la structure. 
    	 * Le paramètre user_data correspond au dernier paramètre de 
    	 * g_signal_connect */
    	Gui* gui = user_data;
    	gchar *title;
     
    	/* On copie le titre de la fenêtre, on l'inverse et on remplace 
    	 * l'ancien titre */
    	title = g_strdup (gtk_window_get_title (GTK_WINDOW (gui->main_window)));
    	g_strreverse (title);
    	gtk_window_set_title (GTK_WINDOW (gui->main_window), title);
    	g_free (title);
    }
     
    /* Fonction qui crée tous les éléments de notre interface graphique */
    Gui * gui_new (void)
    {
    	Gui *gui;
    	gui = g_new (Gui, 1);
    	gui->main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_title (GTK_WINDOW (gui->main_window), "Hello World !");
    	gtk_window_set_default_size (GTK_WINDOW (gui->main_window), 320, 240);
    	gui->button = gtk_button_new_with_label ("Cliquez moi !");
    	gtk_container_add (GTK_CONTAINER (gui->main_window), gui->button);
    	return gui;
    }
     
    int main (int argc, char **argv)
    {
    	Gui *gui;
     
    	gtk_init (&argc, &argv);
     
           	gui = gui_new ();
    	g_signal_connect (G_OBJECT (gui->main_window), "delete-event", gtk_main_quit, NULL);
    	g_signal_connect (G_OBJECT (gui->button), "clicked", G_CALLBACK (on_button_clicked), gui);
    	gtk_widget_show_all (gui->main_window);
    	gtk_main ();
     
    	return 0;
    }

Discussions similaires

  1. Passer plusieurs variables dans paypal
    Par guigui48 dans le forum E-Commerce
    Réponses: 9
    Dernier message: 17/08/2011, 17h06
  2. Passer plusieurs variables dans une fonction
    Par LM_programme dans le forum GTK+
    Réponses: 1
    Dernier message: 27/04/2010, 01h17
  3. Réponses: 5
    Dernier message: 03/07/2007, 10h31
  4. Passer plusieurs arguments dans un même lien
    Par The Molo dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2007, 15h00
  5. Passer plusieurs paramètres dans un callback (débutant!)
    Par pilouface dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 07/02/2007, 20h42

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