Re: libsigc++ tutorial



2012/8/18 Arbol One <arbolone gmail com>:
> Using Gtkmm - 2.22 on  Win7 with MinGW.
>
>
>
>
>
> Well, this is what I have done so far, based on what I understand from the
> libsigc++ tutorial, what am I doing wrong?
>
> class myEntry : virtual public Gtk::VBox {
>
> private:
>
>     Gtk::Entry* ntrTest;
>
>     Gtk::Label* lblTest;
>
>     sigc::signal<void> signal_detected;
>
> public:
>
>     myEntry();
>
>     virtual ~myEntry() {}
>
>     bool notifyOutofFocus(GdkEventFocus* event);
>
> };
>
> myEntry::myEntry() {
>
>     this->ntrTest = Gtk::manage(new Gtk::Entry());
>
>     this->ntrTest->signal_focus_out_event().connect(sigc::mem_fun(*this,
> &jme::myEntry::notifyOutofFocus));
>
>     this->lblTest = Gtk::manage(new Gtk::Label("test", Gtk::ALIGN_LEFT));
>
>     this->pack_start(*lblTest);
>
>     this->pack_start(*ntrTest);
>
>
>
> }
>
> bool myEntry::notifyOutofFocus(GdkEventFocus* event) {
>
>         signal_detected.emit();
>
>         return false;
>
> }
>
> class runner : public Gtk::Window {
>
> private:
>
>     Gtk::Button* btnapply;
>
>     Gtk::Button* btnexit;
>
>     Gtk::HBox* btnhb;
>
>     Gtk::VBox* vb;
>
>     jme::myEntry* mentry;
>
>
>
> public:
>
>     runner();
>
>     ~runner() {}
>
>     void apply() { Display();    }
>
>     void close() {  this->hide();   }
>
>     bool warn_people();
>
>
>
> };
>
> bool runner::warn_people() {
>
>     sleep(3);
>
>     Display();
>
>     return false;
>
> }
>

bool runner::warn_people() is runner's non-static method, but...

>
> runner::runner() {
>
>     btnhb = Gtk::manage(new Gtk::HBox);
>
>     vb = Gtk::manage(new Gtk::VBox);
>
>     mentry = Gtk::manage(new jme::myEntry);
>
> ////////// >> compile time error !!
>
>     mentry->signal_detected.connect( sigc::ptr_fun(&runner::warn_people) );
>
> //////// <<< compile time error ends

... here you treat it as either static method or mere function. Use
sigc::mem_fun instead of sigc::ptr_fun (like you are doing two lines
lower in comment line).


>     btnapply = Gtk::manage(new Gtk::Button(Gtk::Stock::APPLY));
>
>     //btnapply->signal_clicked().connect( sigc::mem_fun(*this,
> &runner::apply));
>
>
>
>     btnexit = Gtk::manage(new Gtk::Button(Gtk::Stock::CLOSE));
>
>     btnexit->signal_clicked().connect(sigc::mem_fun(*this, &runner::close));
>
>
>
>     vb->pack_start(*mentry);
>
>     btnhb->pack_start(*btnapply);
>
>     btnhb->pack_start(*btnexit);
>
>     vb->pack_start(*btnhb);
>
>
>
>     set_default_size(200, 50);
>
>     this->add(*vb);
>
>     this->show_all();
>
>
>
>
>
> }
>
>
>
> int main(int argc, char *argv[]) {
>
>     Gtk::Main kit(argc, argv);
>
>     runner jaime;
>
>     Gtk::Main::run(jaime);
>
>
>
>     return 0;
>
> }
>
>
>
> This e-mail is for the sole use of the intended recipient and may contain
> confidential or privileged information. Unauthorized use of its contents is
> prohibited. If you have received this e-mail in error, please notify sender
> immediately via return e-mail and then delete the original e-mail.
>
>
>
>
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> https://mail.gnome.org/mailman/listinfo/gtkmm-list
>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]