マウスクリックイベントの検出
概要
ウィンドウのクライアント領域をクリックしたことを検出する。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と表示される