ボタンとスロット関数
概要
ボタン(Gtk::Button)を張り付けてクリックイベントを処理する。ボタンをクリックするとsignal_clickedシグナルが発されるので そのシグナルとスロット関数(シグナルハンドラ)をconnect()関数を用いて結びつける ことによってクリックイベントを処理できる。
ソース
bt.cpp#include <gtkmm.h> class MainWin : public Gtk::Window { Gtk::Button m_bt; public: MainWin(); private: void on_bt_clicked(); }; MainWin::MainWin() :m_bt( "クリック" ) { // シグナルとスロットをコネクト m_bt.signal_clicked().connect( sigc::mem_fun( *this, &MainWin::on_bt_clicked ) ); add( m_bt ); show_all_children(); } // スロット関数 void MainWin::on_bt_clicked() { Gtk::MessageDialog diag( *this, "文字" ); diag.run(); } int main( int argc, char *argv[] ) { Gtk::Main kit( argc, argv ); MainWin mainwin; Gtk::Main::run( mainwin ); return 0; }
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。g++ bt.cpp -o bt `pkg-config gtkmm-2.4 --cflags --libs`
結果
