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 :

glade 3, callbacks , lequel et comment choisir, programmer


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut glade 3, callbacks , lequel et comment choisir, programmer
    Bonjour.
    ma question est probablement naïve, mais voilà, je ne trouve pas ce que je cherche ...
    Par exemple, j'ai un bouton ok que je colle à une fénètre, et dont un clic dessus devrait permettre sa fermeture ...
    J'ai le choix entre on_button_clicked, on_button_activate_ et plein d'autres modules ....
    Comment savoir lequel choisir, et surtout, comment mettre derrière le signal le callback adéquat ....
    Plus généralement, face à un boutton, comment choisir le bon signal à retenir, et ou puis je trouver une doc pour programmer les callbacks?

    J'espère que je me fait comprendre, et reste preneur pour toute documentation dessus ...

    D'avance merci ...

  2. #2
    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
    Pour bien choisir ton signal, il n'y a pas 50 000 solutions: il faut lire la documentation du signal. Par exemple pour GtkButton::activate:
    The ::activate signal on GtkButton is an action signal and emitting it causes the button to animate press then release. Applications should never connect to this signal, but use the "clicked" signal.
    On peut difficilement faire plus clair: on te dit explicitement que ce n'est sans doute pas ce que tu cherches, et que c'est "clicked" que tu dois utiliser.

    La démarche quand tu cherche un signal est toujours la même: regarder la doc de la classe qui t'intéresse, cliquer sur le lien "signals" en haut de la page de doc. Celui ci t'amène à la liste des signaux de la classe en question. Si tu n'y trouves pas ton bonheur, tu reviens en haut de page et tu cliques sur le lien "implemented interfaces", et tu regardes les signaux de ces classes là. Si tu ne trouves toujours rien, tu repars de ta classe d'origine, et tu suis le lien "object hierarchy", qui t'amène à l'arbre d'héritage. Tu cliques sur la classe mère, tu cherches le signal, si tu ne le trouves pas, tu regarde dans la classe mère, etc.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    Oui ...
    je m'en suis rendu compte ...
    Et après, dans la classe que tu manipules, tu as les fonctions ou procédures qui vont avec ...
    Donc, pour le cas particulier de la fermeture d'une fenêtre en cliquant sur le bouton, je colle au bouton le signal on_clicked, et je dois programmer le callback en lui disant de récupérer le widget fenêtre, et probablement utiliser une procédure on_close_windows ...

    Sauf que dans le windows, on n'a rien (ou mieux, je ne vois rien) qui va dans ce sens ...

  4. #4
    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
    Tu pourrais mettre des captures d'écran comparatives ? Parce que là j'ai du mal à comprendre ce que tu vois exactement.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    Merci bien.
    En pièce jointe, voilà une capture d'écran de mon fichier glade.
    Donc, derrière le bouton OK, je colle un signal on_clicked_button.
    Je récupère le signal ici:
    Register_Handler
    (Builder => Builder,
    Handler_Name => "on_button1_clicked",
    Handler => manual_callbacks.Quit'Access);
    Puis, dans mon fichier des callbacks, je voudrais que lorsqu'on clique dessus, la fenêtre se ferme.
    Je pense qu'il faut appeler une méthode qui ferme la fenêtre, du style on_close_windows ... Mais je ne vois rien dans ce sens.

    Alors, bêtement je fais ceci, qui est un bout de code récupéré sur le net:
    procedure Quit (Object : access Gtkada_Builder_Record'Class) is
    pragma Unreferenced (Object);
    begin
    Gtk.Main.Main_Quit;
    end Quit;
    et bien évidemment rien ne se passe ...

    Comment fermer ma fenêtre principale lorsqu'on clique sur le boutton OK???
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/06/2012, 16h29
  2. Réponses: 3
    Dernier message: 18/08/2006, 09h40
  3. Association : comment choisir le sens ?
    Par 1cado dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 26/09/2004, 23h12
  4. [JSP][Tomcat] COmment choisir la place des fichiers .class?
    Par mathieu dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 03/03/2004, 09h24
  5. Comment choisir une langue differente de la locale?
    Par julian_ross dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/03/2004, 18h08

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