Bonjour à tous,
J'ai un problème pour récupérer des valeurs avec GTK.
Lorsque je valide un champ pEntry => Je fait appel à une fonction (cb_save_valeur) qui est censée me modifier la variable passée en paramètre en y mettant la valeur entrée dans un GTK_Entry. J'arrive à modifier la variable dans ma fonction mais je n'arrive pas à retourner cette modification pour pouvoir l'utiliser plus loin dans ma fonction principale.
En fait dans mon main j'ai ça:
qui appelle ma fonction qui est définie ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 const gchar *port_envoi="2000"; //définition de port_envoi ... /*appel de la fonction qui est censé me modifier ''port_envoi'' lors de la validation du champ pEntry */ g_signal_connect(G_OBJECT(pEntry), "activate", G_CALLBACK(cb_save_valeur),(gchar*) port_envoi);
Je pense que j'ai mal fait cette fonction cb_save_valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void cb_save_valeur(GtkWidget *pEntry,const gchar *sText) { const gchar *valeur; valeur = gtk_entry_get_text(GTK_ENTRY(pEntry)); // Recuperation du texte contenu dans le GtkEntry sText=valeur; printf("(Avant la sortie de la fonction) la valeur de %s est: %s \n",sText,valeur); }
Avant l'appel de la fonction j'ai port_envoi qui est égal à 2000.
Si je rentre par exemple 3000 dans le champ pEntry je vais bien avoir sText qui va prendre la valeur 3000 avec la ligne sText=valeur;
Par contre, lorsque je réutilise ma variable ''port_envoi'' plus loin dans le programme en paramètre d'une autre fonction, ma variable est encore à 2000.
(donc comment faut-il faire pour modifier ma variable port_envoi à partir d'une fonction séparée, de manière à y mettre la valeur d'un GTK_Entry ? )
J'ai essayé en ajoutant un « return sText; » à la fin de ma fonction cb_save_valeur mais ça n'a pas suffit.
Voilà. Je suis un peu déstabilisé par le fait que c'est plus vraiment de la programmation séquentielle et je suis pas certains d'avoir bien compris tous les rouages de GTK.
Merci d'avance si vous avez des pistes pour que je puisse chercher d'où vient mon problème.![]()
Partager