Dopo aver creato una form con due pulsanti, ho creato un gestore di eventi minimale:
struct Gestore
{
Gestore(Glib::RefPtr<Gnome::Glade::Xml> &the_xml)
{
dynamic_cast<Gtk::Button*>(the_xml->get_widget("button_due"))->signal_clicked().connect( sigc::mem_fun(*this, &Gestore::on_click_due) );
dynamic_cast<Gtk::Button*>(the_xml->get_widget("button_uno"))->signal_clicked().connect( sigc::mem_fun(*this, &Gestore::on_click_uno) );
}
void on_click_due()
{
cout << "Click sul bottone DUE!!!" << endl;
}
void on_click_uno()
{
cout << "Click sul bottone UNO!!!" << endl;
}
};
A questo punto, ecco il main (generato da Anjuta) con l'aggiunta del mio gestore:
int main (int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
Gestore *gestore;
//Load the Glade file and instiate its widgets:
Glib::RefPtr<Gnome::Glade::Xml> refXml;
try
{
refXml = Gnome::Glade::Xml::create(GLADE_FILE);
gestore = new Gestore(refXml);
}
catch(const Gnome::Glade::XmlError& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
Gtk::Window* main_win = 0;
refXml->get_widget("main_window", main_win);
if (main_win)
{
kit.run(*main_win);
}
delete gestore;
return 0;
}
Nessun commento:
Posta un commento