マウスクリックイベントの検出
概要
ウィンドウのクライアント領域をクリックしたことを検出する。Gtk::Windowはデフォルトではクリックイベントを監視していないため add_events( Gdk::BUTTON_PRESS_MASK ) によって監視イベントを追加する必要がある。 あとは Gtk::Window::on_button_press_event()をオーバロードするとクリックするたびに Gtk::Window::on_button_press_event()が呼び出される。
ソース
mclick
#include <gtkmm.h>
#include <iostream>
class MainWin : public Gtk::Window
{
public:
MainWin();
protected:
virtual bool on_button_press_event( GdkEventButton* event );
};
MainWin::MainWin()
{
// OFFになってるイベントを追加
add_events( Gdk::BUTTON_PRESS_MASK );
}
// マウスクリック
bool MainWin::on_button_press_event( GdkEventButton* event )
{
std::cout << "click\n";
return true;
}
int main( int argc, char *argv[] )
{
Gtk::Main kit( argc, argv );
MainWin mainwin;
Gtk::Main::run( mainwin );
return 0;
}
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。g++ mclick.cpp -o mclick `pkg-config gtkmm-2.4 --cflags --libs`
結果
実行してクライアント領域をクリックする度に端末にclickと表示される