Skip to content

Instantly share code, notes, and snippets.

@zedtux
Last active January 2, 2016 23:59
Show Gist options
  • Save zedtux/8380077 to your computer and use it in GitHub Desktop.
Save zedtux/8380077 to your computer and use it in GitHub Desktop.
Créer simplement une interface GTK en C++ - Mise a jour du hello.cpp 2
#include “hello.h”
//~ Ici j’ai ajouté le bouton, le label et la boite de text en initialization à 0
Hello::Hello(BaseObjectType* cobject, const Glib::RefPtr& refGlade)
: Gtk::Window(cobject),
m_refXmlGlade(refGlade),
m_buttonQuit(0),
m_buttonApply(0),
m_entryName(0),
m_labelName(0)
{
m_refXmlGlade->get_widget("button1", m_buttonQuit);
if ( m_buttonQuit )
{
m_buttonQuit->signal_clicked().connect( sigc::mem_fun(*this, &Hello::on_button_quit) );
} else {
std::cerr << "Unable to hook the Quit button !" << std::endl;
}
//~ Ici notre bouton Appliquer
m_refXmlGlade->get_widget("button2", m_buttonApply);
if ( m_buttonApply )
{
//~ Que nous lions à la méthode on_button_apply()
m_buttonApply->signal_clicked().connect( sigc::mem_fun(*this, &Hello::on_button_apply) );
} else {
std::cerr << "Unable to hook the Apply button !" << std::endl;
}
//~ Ici on récupère le lable et la boite de text.
m_refXmlGlade->get_widget("entry1", m_entryName);
m_refXmlGlade->get_widget("label1", m_labelName);
}
Hello::~Hello()
{
}
void Hello::on_button_quit()
{
hide();
}
//~ Notre nouvelle méthode, appelé au clique sur appliquer
void Hello::on_button_apply()
{
//~ Qui appelle la méthode sayHello() en passant ce qui à été entré dans la boite de text
//~ Il suffit d’utiliser get_text() sur la boite de dialog pour récupérer son text… facile hun ! :-D
this->sayHello( m_entryName->get_text() );
}
//~ La méthode qui va modifier le Label
void Hello::sayHello( Glib::ustring name )
{
//~ Avec la valeur passé en argument.
//~ Il est évident qu’il faudrait faire des petites vérifications avant de modifier le label :-)
m_labelName->set_text("Hello " + name + "!");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment