gtkmm/GUIプログラミング - 1
CではなくてC++で書きたいという理由でGTK+をすっ飛ばしてgtkmmを使い始めてみました。
日本語の満足いくチュートリアルがパッと見つからなかったのでここのドキュメントページに載ってるチュートリアルっぽいリファレンスと格闘中。
とりあえず、ここまで学習したことのまとめ。
準備
gtkmmのライブラリ等は適当にダウンロード。おいらはubuntuのリポジトリから適当に放り込みました。
もしgtkmmを使って作ったアプリを配布する場合、使用者のPCにgtkmmのランタイムが必要。
Gladeを使うならglademmがあるとインターフェースの切り替えが楽になって便利。ただし実行時にはglademmのランタイムが必要。
makeについて
方法その1:全自動。anjutaとかkdevelopに頼る。おいらみたいな怠惰な人向け。違う環境に移った時にきっと慌てます。
方法その2:全手動。コンパイルする時に `pkg-config gtkmm-2.4 --cflags` を、リンクする時に `pkg-config gtkmm-2.4 --libs` をそれぞれオプションに指定すれば大丈夫なはず。
空のウィンドウを表示。
#include <gtkmm.h> int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); Gtk::Window window; Gtk::Main::run(window); return 0; }
これで空っぽのウィンドウが表示されます。
#include <gtkmm.h>
gtkmmのヘッダファイルを全てインクルードします。
必要に応じてインクルードする場合、gtkmmディレクトリ以下のヘッダファイルを適宜インクルードします。
Gtk::Main kit(argc, argv);
gtkmmの初期化。変数名はkitでなくてもいいが、参考にした資料ではkitという名前になっていたのでそのまま利用。
コマンドライン引数を欲しがるので与えてあげます。
Gtk::Window window;
Gtk::Windowクラスのオブジェクトを定義します。
Buttonとかのウィジェットの場合は、このように生成した後にadd()メソッドでコンテナに追加し、show()メソッドで可視化してやると表示されます。
メインとなるウィンドウの場合はshow()メソッドではなく、後述するGtk::Main::run関数で有効化して可視化します。
Gtk::Main::run(window);
windowを可視化し、メインループに入ってイベントの発生を待ちます。
ウィンドウの×ボタンを押されるなどして終了イベントが発生し、最後のフェーズまで処理が終了するとrun関数が終了し、この次の行に処理が移ります。
Gtk::Main::runはstaticメンバ関数なので、先に生成したkitと合わせて kit.run(window) とすることもできます。
とりあえず第一回gtkmmまとめ終了。