sigc wurde nicht deklariert



  • hab mir mal so einen kleines fensterchen gebaut mit einem button und den wollte ich jetzt mit einem click-event ausstatten.
    hat nicht wirklich funktioniert da mir beim kompilieren des ganzen die fehlermeldung
    "sigc wurd nicht deklariert" bzw.
    "mem_fun wurde in diesem gueltigkeitsbereich nicht deklariert"
    um die ohren flog.
    dann hab ich mal das tutorial um rat gefragt und auch mit diesem beispiel kam die gleiche fehlermeldung.

    #include <gtkmm.h>
    
    // Einfach von Gtk::Window erben
    struct MyWindow : public Gtk::Window
    {
      MyWindow();
      Gtk::Button m_quit_button;     // Wir wollen mal einen Button
      void on_button_quit_clicked(); // Und das hier soll beim clicken ausgeführt werden
    };
    MyWindow::MyWindow()
    : m_quit_button(Glib::locale_to_utf8("Quit")) // Button Beschriftung setzen
    {
      set_size_request( 200 , 100 ); // Setzen der Fenstergröße
    
      set_title(Glib::locale_to_utf8("Hello World")); // Titel / Caption setzen
    
      add(m_quit_button);  // Dem Fenster den Button zuordnen
    
      //Click Signal der Method on_button_quit_clicked() zu ordnen
    m_quit_button.signal_clicked().connect(sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked));
    
      show_all(); // Alle show() bei allen childs und sich selbst rekursiv aufrufen
    }
    
    // Signal
    void MyWindow::on_button_quit_clicked()
    {
      hide();// Fenster schließen
    }
    int main(int argc, char**argv)
    {
    // Um Standard Gtk+ Commandline Optionen zu garantieren werden die argumente zur Initialisierung mit übergeben
      Gtk::Main main_obj(argc,argv);
    
      MyWindow window_obj;      // Eine Instanz unseres Spezialisierten Fensters
    
      main_obj.run(window_obj); // Starten der Anwendung
    
      return EXIT_SUCCESS;      // return 0
    }
    

    hier ist fuer mich guter rat teuer, da sobald das

    m_quit_button.signal_clicked().connect(sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked));
    

    auskommentiert wird die ganze sache schoen funktioniert
    zur info:
    zum entwickeln verwende ich den amjuta editor
    vielleicht weiss jemand ob ich hier noch irgendwas expliziet angeben muss, damit die ganze sache einwandfrei kompiliert



  • Also wenn du anjuta benutzt wirst du warscheinlich gtkmm-2.0 verwenden
    Und da war sigc SigC oder so.



  • hab das jetzt mal probiert.
    so hat es jetzt funktioniert

    m_quit_button.signal_clicked().connect(SigC::slot(*this,&MyWindow::on_button_quit_clicked));
    

    anstelle von

    sigc::mem_fun
    

    kommt

    SigC::slot
    

    und dann funkts auch mit dem click

    recht herzlichen dank @evilissimo fuer diesen hinweis



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten