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まとめ終了。