Re: libsigc++ tutorial
- From: Krzesimir Nowak <qdlacz gmail com>
- To: Arbol One <arbolone gmail com>
- Cc: gtkmm-list gnome org
- Subject: Re: libsigc++ tutorial
- Date: Sat, 18 Aug 2012 16:38:13 +0200
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]