Bonjour j'aimerais savoir quelle est la fonction pour déconnecter un widget d'un signal ???
Bonjour j'aimerais savoir quelle est la fonction pour déconnecter un widget d'un signal ???
Pas sûr d'avoir compris la questionLes widgets émettent des signaux auxquels tu peux connecter des callbacks si tu le désires.
Donc je sais pas si tu veux déconnecter un callabck d'un signal, ou bien "désactiver" l'émission d'un certain signal par un widget ? Tu peux développer un epu plus ta question ?
Bien sûuuuuuuuurr que je peux la developper![]()
Alors voila j'ai un p'tit widget auquel j'ai connecté un signal ("changed") et moi à un certain moment de mon programme je ne veux PLUS qu'il soit connecté à ce signal
Voila j'espere avoir assez détaillé !!!
Dans le cas contraire dis-moi ce que tu n'as pas compris![]()
Merci d'avance pour vos future réponse![]()
Non, comme dit plus haut, tu as connecté un callback à un signal émis par ton widget, et c'est le callback que tu souhaites déconnecter du signal. Un signal ne se connecte pas à un widget. Pour cela, tu peux utiliser g_signal_handler_disconnect (le gulong à passer en argument t'es renvoyé en valeur de retour de l'appel à g_signal_connect) ou bien g_signal_handler_disconnect_by_func (la fonction attendue en argument est le callback que tu as connecté, le paramètre data correspond au paramètre user_data fourni lors de l'appel à g_signal_connect).Envoyé par mick009
Merci de vos réponses. J'ai testé et voici ce que ca donne :
L'ennui dans la console, cela marque :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(gtk_notebook_get_current_page(GTK_NOTEBOOK(Liste_onglet)) != -1){ g_signal_handler_disconnect(TextBuffer, Numero_signal);}
g_signal_handler_disconnect : assertion 'handler_id > 0' failed
Oui alors j'ai mis une condition pour ne pas avoir 0.
Seulement, il y a une erreur dans la console :
Avant j'ai afficher le Numero_signal suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part gsignal.c:1739 : instance '00F75F40' has no handler with id '236'
Cela m'a sorti finalement 236
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Numero_signal = g_signal_connect(G_OBJECT(TextBuffer), "changed", G_CALLBACK(Source), NULL); printf("%ld\n", Numero_signal);
Merci de votre aide en tout cas et merci d'avance pour les futures réponses![]()
Je tenterais de faire un g_print ("connected %u to widget %p\n", Numero_signal, G_OBJECT(TextBuffer)); après le g_signal_connect
et un g_print ("disconnecting %u from widget %p\n", Numero_signal, G_OBJECT(TextBuffer)); pour tenter de comprendre ce qui ne va pas.
Et essaie de mettre un G_OBJECT() autour du 1er argument de g_signal_disconnect_xxx
J'ai réussi merci pour toute vos réponses
En fait j'avais mal placé le code par rapport à ce que je veux faire et donc cela m'affichait cette erreur...
Partager