probleme C -> GTK -> glade: Valeurs éronnées
Forum Programmation : probleme C -> GTK -> glade: Valeurs éronnées
Bonjour, j'ai découvert Glade il y a peu de temps et je l'ai trouvé génial.
Mais j'ai un très gros probleme:
Quand je récupere une valeur entrée par l'utilisateur (avec un spin button) en la fprintfant la valeur est totalement differente et, elle ne change pas quand change la valeur ( je suis sous XP ou Vista)
ex:
j'execute mon programme, je met la valeur du spinbutton à 8, je vais chercher le fichier ou je l'ai fprintfé et je trouve une valeur.
je recommence (j'ai supprimé le fichier ou j'avais fprintfé la 1ere valeur), je met la valeur à 99 et la valeur fprintfé est la même que la premiere.
Si cela n'est pas tres claire, je met le "interface.c":
Code :
|
j'ai juste rajouté les fprintfs et les commentaires (l 53-54 et 59-60)
Sinon le projet en entier, vous pouvez le tester svp (on sait jamais ça peut fonctionner autre part
)
http://ptitcois35.free.fr/project2.zip
Voila, merci de vos futur réponses
Tu es à la création des objets ici, donc tu enregistre la valeur initiale. Comment gères-tu le signal "changed" ?
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
euh désolé je ne m'y connais pas trop en GTK, il y a des objet dans le C avec GTK?, c'est quoi le signal "changed" ?
Tu crées de objets graphiques (que j'appelle widget) dans ta fonction, mais aucune fonction n'est attachée aux actions des widgets. Tout ce que tu fait n'a aucune incidence sur rien, il faut gérer les actions. Pour ceci, gtk utilise les signaux: tu associes un type de signal à une fonction (que tu écris). Quand l'utilisateur modifiera un widget, un signal est émis par ce widget, et donc ta fonction que tu a lié au signal sera appelée.
lorsque l'utilisateur changera ton spin, le signal "changed" est envoyé. Dans ton cas, tu n'y a rien connecté, alors ça ne fait rien.
la fonction pour connecter est un truc du genre signal_connect (mais c'est pas exactement ça). Je te suggère de rechercher un tutorial simple pour expliquer les signaux.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Merci beaucoup, tu me débloque CRicky.
Si j'ai bien compris le signal_connect sert a par exemple si on clique sur un bouton => tel ou tel fenetre s'ouvre non ?
Je ais rechercher cette appremidi
Sinon est-ce que tu penses qu'il faut que j'apprennne la GTK ? avec toutes les fonction les plus importantes (comme sur le siteduzero ?)
Message édité par ptitcois le 13-02-2008 à 07:45:12
C'est le principe et le fonctionnement qu'il faut connaitre. Apprendre les objets, les noms de fonctions ne sert à rien.
Pour le bouton, tu fais ce que tu veux puisqu'au signal tu connecte une fonction que tu écris, donc, tu y fais ce que tu veux (comme lancer une fenêtre).
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Je me suis enseigné sur internet, j'ai compris le modde de fonctionnement (en fait la fonction est "g_signal_connect" ), mais c'est plus pour les fonction "output" que j'ai du mal.
J'ai recherché sur google mais je n'ai trouvé que des tutos en anglais et je ne comprend pas très bien l'anglais.
Sinon il y a le tuto sur le site du zéro mais je ne le trouve pas très complet (on ne parle pas de "spinbutton", de "combobox" etc.).
Voila donc si vous connaissez des Tutos en français de préférence je suis preneur
EDIT: j'ai trouvé la fonction de sortie du spin button (gtk_spin_button_get_value_as_int ) mais je ne sais pas comment l'utiliser.
Sinon dans l'onglet "signal" de glade il y a plusieur fonctions, mais gtk_spin_button_get_value_as_int n'y est pas donc si vous savez l'utilisez (et celle pour les comboboxes) n'hésites pas.
Merci
Message édité par ptitcois le 13-02-2008 à 21:09:57
En fait dans ta fonction que tu as connecté avec le signal changed, tu utilises la fonction gtk_spin_button_get_value_as_int pour connaitre dynamiquement la nouvelle valeur du spin.
Pour t'entrainer tu peux changer le contenu d'un deuxième spin box, lorsque le premier change. Ne fais pas la même chose avec l'autre, ça risque de partir en boucle infinie
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ok mais comment on l'utilise gtk_spin_button_get_value_as_int ?
Tu donnes en paramètre un pointeur sur ton objet (spinbutton1), qui du coup doit être une variable globale, puisque tu n'es plus dans ta fonction de création.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Mais avant je dois faire un signal qui mène vers une fonction ?
Si ou je peux mettre en parametre ce pointeur non ?
Tu peux pas faire un petit code archi simplifié (fait en 3 min) pour que je vois l' "architecture", sinon c'est quoi l'équivalent de gtk_spin_button_get_value_as_int pour un combobox ?
Je te conseille de suivre un tutorial ça te sera plus simple.
http://library.gnome.org/devel/gtk-tutorial/stable/
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
euhh c'est de l'anglais
Mais bon je vais essayer de traduire ça.
Sinon (il y est peut etre sur le lien) tu connaiterais pas un site ou il explique chaque signal (ex delete-event, la petite croix) ?
Désolé, mais pour moi une doc en français ne vaut pas grand chose, alors je n'en connais pas
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ok, merci je vais essayer de faire ça, sinon: go C++ !
Peux-tu noter que "erronée" (au féminin singulier) s'écrit... "erronée" et corriger le titre du fil en conséquence ? MERCI;
Il y a 648 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
