ボタンとスロット関数
概要
ボタン(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`
結果