Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1928 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Pb d'espace de nom avec GTKmm-2.4 sous Dev-Cpp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb d'espace de nom avec GTKmm-2.4 sous Dev-Cpp

n°1492269
ArtPlay
Posté le 16-12-2006 à 22:09:03  profilanswer
 

Bonjour,  
 
Je débute totalement sous GTKmm dont j'ai besoin pour un projet, et je galère pas mal pour des trucs extrêmement simplistes, ai-je l'impression. En gros, pour l'instant, j'essaie de compiler le code suivant :
 
 

Code :
  1. #include <gtkmm/main.h>
  2. #include <gtkmm/window.h>
  3. #include <gtkmm/box.h>
  4. #include <gtkmm/label.h>
  5. #include <gtkmm/entry.h>
  6. #include <gtkmm/button.h>
  7. #include <iostream>
  8. void on_button_clicked() {
  9. std::cout << "Bonjour" << std::endl;
  10. }
  11. int main(int argc, char **argv)
  12. {
  13.     Gtk::Main app(argc, argv);
  14.     Gtk::Window w;
  15.     Gtk::VBox vb;
  16.     w.add(vb);
  17.     Gtk::Label l;
  18.     vb.pack_start(l);
  19.     l.show();
  20.    
  21.     Gtk::Entry e;
  22.     vb.pack_start(e);
  23.     e.show();
  24.    
  25.     Gtk::Button b("Bonjour !" );
  26.     b.signal_clicked().connect(SigC::mem_fun(&on_button_clicked));
  27.     vb.pack_start(b);
  28.     b.show();
  29.     vb.show();
  30.     app.run(w);
  31.     return 0;
  32. }


 
Intérêt du code : génération d'une fenêtre, d'un espace où écrire, d'un bouton permettant d'écrire "bonjour" lorsqu'on clique dessus (hourra !).
 
 
Et ce brave et fidèle Dev-Cpp me retourne la jolie erreur suivante :  
 
30 C:\Dev-Cpp\SansNom1.cpp `mem_fun' is not a member of `SigC'  
 
 
 
NB, j'ai essayé de mettre 'slot' à la place de 'mem_fun', ça n'a rien changé, ça ne semble donc pas être un problème de version.  
 
J'ai mis dans les options du projet le résultat des commandes de config. pkg-config --cflags gtkmm-2.4 et pkg-config --libs gtkmm-2.4. Malgré cela, ça semble être un problème d'include, semble-t-il qu'il ne sache pas où aller chercher le namespace SigC, bien que j'aie installé GTK dans C:\Dev-Cpp.
 
 
Et vu que je touche pas grand chose quand il s'agit de comprendre comment marche la prog. à un peu plus bas niveau, je suis un peu en galère alors que ça doit être je pense tout con ...
 
Bref, merci si qui que ce soit peut m'aider.

mood
Publicité
Posté le 16-12-2006 à 22:09:03  profilanswer
 

n°1492324
GrosBocdel
Posté le 17-12-2006 à 09:26:35  profilanswer
 

avec :
b.signal_clicked().connect( sigc::mem_fun(*this, &on_button_clicked) );
Ca devrait fonctionner.

n°1492371
ArtPlay
Posté le 17-12-2006 à 15:08:28  profilanswer
 

Je crains que ça ne fonctionne pas davantage malheureusement :(.

n°1492379
GrosBocdel
Posté le 17-12-2006 à 15:57:57  profilanswer
 

ArtPlay a écrit :

Je crains que ça ne fonctionne pas davantage malheureusement :(.


 
Oui, désolé, je me suis gouré. Le this n'avait pas de sens ici.

Code :
  1. b.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));


Ca passe. Attention, sigc en minuscules. Je crois que ça a du changer entre les versions 2.2 et 2.4 de gtkmm, et c'est l'un des rares trucs à retoucher pour passer d'une version à l'autre. Gaffe donc si tu te fais la main sur des vieux sources. Sinon, la doc sur gtkmm.org est bien foutue, même si la partie signaux n'est pas simple.
 
 

n°1492408
ArtPlay
Posté le 17-12-2006 à 17:51:43  profilanswer
 

Aah, très bien, merci beaucoup, ça marche désormais.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Pb d'espace de nom avec GTKmm-2.4 sous Dev-Cpp

 

Sujets relatifs
Espace entre mes blocsmysql - recuperer l'espace non utilisé de la base
[Résolu] Readfile et UTF-8 : problème d'espace.Dev C++ : 'main' must return 'int'
[html] aucun espace entre 2 image[SED] Remplacement simple d'une chaine avec espace
Espace apres une image[Delphi6]Une fonction Espace
Remplcer les %20 en espace dans les noms de fichiers 
Plus de sujets relatifs à : Pb d'espace de nom avec GTKmm-2.4 sous Dev-Cpp


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)