====== ウィジェット ====== [[fltk:|{{:fltk:fltk_shadow.png?200|}}]] このページではFLTKにおいてウィジェットとは何なのかを解説します。 ===== FLTKのウィジェットはクラス階層で構成されている ===== FLTKは主にGUIアプリケーションのためのライブラリです。 GUIアプリケーションの見た目や動作を構成する部品は、ウィジェットと呼ばれます。 FLTKはC++のクラスによる古典的なオブジェクト指向を中心としてデザインされています。 Fl_Widgetクラスをルートとした階層的な関係をもつ、様々なウィジェットが派生クラスで提供されています。 ===== Fl_Widgetは抽象クラスである ===== Fl_Widgetクラスは抽象クラスであり、直接そのインスタンスオブジェクトを作成して何かをすることはありません。 すべてのウィジェットに共通のインターフェイスと振る舞いを提供するために存在しています。 これによって、ウィジェットクラスのオブジェクトによる階層的な(あるいは木構造のような)レイアウトでアプリケーションを表現できます。 ウィジェットとそれから派生するクラスのが階層的な関係を持つのとはまた別の意味なので混同しないようにしてください。 GoFのデザインパターンの[[wpjp>Composite パターン]]を思い出すと良いかもしれません。 ===== ウィジェットによりGUIを表現する ===== 具体的には、Fl_Widgetクラスのオブジェクトは、同じFl_Widgetクラスのオブジェクトを子として持つことができます。 例えば、[[helloworld|Hello World]]では、アプリケーションのウィンドウを表現するFl_Windowクラスのオブジェクト作成して、その中にテキストを表示するためにFl_Boxのオブジェクト作成しました。 Fl_Windowクラスのオブジェクトは親(かつルート)で、Fl_Boxのオブジェクトがその子になっています。 Hello Worldでは一つの親ウィジェット(ウィンドウ)と一つの子(ボックス)しかありませんでしたが、親はいくつでも子を持つことができます。 このパターンに従ってGUIアプリケーションを組み立てるというのが、FLTKのウィジェットシステムの基本となっています。 ===== 参考 ===== * [[https://www.fltk.org/doc-1.4/classFl__Widget.html|Fl_Widgetクラスのリファレンス]]