Gtkmm Builder e Glade

Con Glade si possono creare interfacce grafiche in modo semplice.
Si ottiene un file *.glade che verrà usato da Gtk::Builder.

# creare un oggetto Builder
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create();
# caricare la GUI
builder->add_from_file("src/gui.glade");

ora si presentano due possibilità: o dobbiamo accedere ad una classe “base” di Gtkmm oppure ad una classe derivata. Ci sono 2 metodi di Gtk::Builder per questi 2 casi: get_widget e get_widget_derived. Bisogna fare attenzione al caso di classi derivate: bisogna avere un costruttore che accetta 2 parametri: il puntatore all’ oggetto container, e il puntatore al builder.
Ad esempio:

# da qualche parte:
class Helloworld : public Gtk::Window
{
	public:
		Helloworld();
		Helloworld(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade);
};

# nel main:
Helloworld *hw;

builder->get_widget_derived("window", hw);
return app->run(*hw);

ATTENZIONE:
il costruttore della classe derivata DEVE chiamare il costruttore della classe base nella lista di inizializzazione:

Helloworld::Helloworld(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade) :
    Gtk::Window(cobject), builder(refGlade){

    builder->get_widget("btnOk", btnOk);
    builder->get_widget("btnCancel", btnCancel);
    builder->get_widget("lblNotice",lblNotice);

    btnOk->signal_clicked().connect(sigc::mem_fun(*this, &FrmMain::on_ok_button_clicked));
    btnCancel->signal_clicked().connect(sigc::mem_fun(*this, &FrmMain::on_cancel_button_clicked));

}

vedere anche http://milindapro.blogspot.it/2012/10/create-gui-with-gtkmm-glade-with-gtkmm.html

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...