ウィジット

gtkmmアプリケーションはウィジット、ボタンやテキストボックスなどを納めたウィンドウで構成されています。いくつかのシステムではこれらのウィジットは“コントロール”と呼ばれています。アプリケーションのウィンドウ内にあるどのウィジットにも、コード上の C++ オブジェクトが存在しています。ですから、ウィジットクラスのメソッドを呼ぶだけで見えているウィジットに変化を起こすことできます。

ウィジットはコンテナウィンドウ(フレームやノートブックなど)のなかにある、ウィジットの階層構造によって配置されています。このようなコンテナウィジット、例えばGtk::VBoxなどは不可視であり、ただ存在してウィジットをまとめています。次のコード例はGtk::Buttonを2つGtk::VBoxコンテナウィジットに加えます。

m_box.pack_start(m_Button1);
m_box.pack_start(m_Button2);

そして次の例はこれらのボタンを納めたGtk::VBoxを可視のフレームとタイトルを持ったGtk::Frameに加えます:

m_frame.add(m_box);

この本のほとんどの章では特定のウィジットだけを扱っています。ウィジットをコンテナウィジットに納めることについてより詳しい情報を知りたければ、コンテナウィジットを見てください。

ところで、ウィンドウやウィジットの見た目またはレイアウトをC++コードで指定することもできますが、もっと便利だと思うに違いないのは、Gladeを使ってユーザーインターフェイスを設計し、実行時にlibglademmで読み込むことです。Gladeとlibglademmの章を見てください。

gtkmmウィジットのインスタンスの寿命とスコープは、普通のその他のC++クラスのものと変わりません。しかし、gtkmmにはオプションとして手間を削減する機能があります(この後のコード例でも出てきます)。Gtk::manage()を使うと、子ウィジットに対して、それを保持しているコンテナウィジットを経由してメッセージを渡すことができるようになります。これにより、deleteを考えずにウィジットをnewしてコンテナに加えることができます。gtkmmのメモリ管理テクニックについて学ぶにはメモリ管理の章を見てください。