ウィジェット

このページではFLTKにおいてウィジェットとは何なのかを解説します。

FLTKのウィジェットはクラス階層で構成されている

FLTKは主にGUIアプリケーションのためのライブラリです。 GUIアプリケーションの見た目や動作を構成する部品は、ウィジェットと呼ばれます。 FLTKはC++のクラスによる古典的なオブジェクト指向を中心としてデザインされています。 Fl_Widgetクラスをルートとした階層的な関係をもつ、様々なウィジェットが派生クラスで提供されています。

Fl_Widgetは抽象クラスである

Fl_Widgetクラスは抽象クラスであり、直接そのインスタンスオブジェクトを作成して何かをすることはありません。 すべてのウィジェットに共通のインターフェイスと振る舞いを提供するために存在しています。

これによって、ウィジェットクラスのオブジェクトによる階層的な(あるいは木構造のような)レイアウトでアプリケーションを表現できます。 ウィジェットとそれから派生するクラスのが階層的な関係を持つのとはまた別の意味なので混同しないようにしてください。 GoFのデザインパターンのComposite パターンを思い出すと良いかもしれません。

ウィジェットによりGUIを表現する

具体的には、Fl_Widgetクラスのオブジェクトは、同じFl_Widgetクラスのオブジェクトを子として持つことができます。 例えば、Hello Worldでは、アプリケーションのウィンドウを表現するFl_Windowクラスのオブジェクト作成して、その中にテキストを表示するためにFl_Boxのオブジェクト作成しました。 Fl_Windowクラスのオブジェクトは親(かつルート)で、Fl_Boxのオブジェクトがその子になっています。

Hello Worldでは一つの親ウィジェット(ウィンドウ)と一つの子(ボックス)しかありませんでしたが、親はいくつでも子を持つことができます。 このパターンに従ってGUIアプリケーションを組み立てるというのが、FLTKのウィジェットシステムの基本となっています。

参考

文書の編集
文書の先頭へ