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 funktioniertm_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.