gtkmm-2.4のソースコードのなかにあるexamples/stock
gtkmm_helloのソースコード(時間短縮のために流用)
#ifndef GTKMM_HELLO_H #define GTKMM_HELLO_H #include <iostream> #include <gtkmm.h> class GtkmmHello : public Gtk::Window { public: GtkmmHello(); virtual ~GtkmmHello(); void on_button_clicked(Gtk::VBox* vb); }; #endif //GTKMM_HELLO_H GtkmmHello::GtkmmHello() { set_title("gtkmm_hello"); set_border_width(10); //manageを使わないとsegmentation faultになる Gtk::Button* m_Button = manage(new Gtk::Button("click")); Gtk::VBox* vb = manage(new Gtk::VBox(false, 0)); m_Button->signal_clicked().connect(sigc::bind( sigc::mem_fun(*this, &GtkmmHello::on_button_clicked), vb)); vb->pack_start(*m_Button, false, false, 0); add(*vb); show_all(); } GtkmmHello::~GtkmmHello() { } void GtkmmHello::on_button_clicked(Gtk::VBox* vb) { Gtk::Button* b = new Gtk::Button("new button"); b->show(); vb->pack_start(*b, false, false, 0); std::cout << "test" << std::endl; } int main (int argc, char *argv[]) { Gtk::Main kit(argc, argv); GtkmmHello window; Gtk::Main::run(window); return 0; }
これが |
こうなる |
0 件のコメント:
コメントを投稿