ウィジェットツールキット、ウィジェット ライブラリ、GUI ツールキット、GUI フレームワーク、UI フレームワーク、またはUX ライブラリは、プログラムのグラフィカル ユーザー インターフェイス(GUI)を構築するために使用されるグラフィカル コントロール要素(ウィジェットと呼ばれる)のセットを含むライブラリまたはライブラリのコレクションです。
ほとんどのウィジェットツールキットには、独自のレンダリングエンジンが含まれています。このエンジンは、特定のオペレーティングシステムやウィンドウシステムに特化したものもあれば、複数のオペレーティングシステムやウィンドウシステムと連携するためのバックエンドや、 OpenGL、OpenVG、EGLなどのレンダリングAPIと連携するものもあります。グラフィカルコントロール要素のルックアンドフィールはハードコードすることも、分離することもでき、テーマやスキンを適用することも可能です。
概要

一部のツールキットは、言語バインディングを使用することで他の言語から使用できます。例えば、 Glade Interface Designerなどのグラフィカルユーザーインターフェースビルダーは、 GtkBuilderなどのユーザーインターフェースマークアップ言語を使用して、WYSIWYG方式でGUIを作成できます。
プログラムの GUI は通常、カスケード方式で構築され、グラフィカル コントロール要素が互いの上に直接追加されます。
ほとんどのウィジェットツールキットは、インタラクションのモデルとしてイベント駆動型プログラミングを採用している。 [ 1 ]ツールキットは、例えばユーザーがボタンをクリックしたときなどのユーザーイベントを処理する。イベントが検出されると、それはアプリケーションに渡され、そこで処理される。これらのツールキットの設計は、イベントアクションの過度に単純化されたモデルを推進し、エラーが発生しやすく、拡張が難しく、過度に複雑なアプリケーションコードを作成することにつながるとして批判されてきた。[ 2 ]有限状態マシンと階層型状態マシンは、リアクティブプログラムの対話型状態変化を表現する高水準モデルとして提案されている。
ウィンドウシステム
ウィンドウはグラフィカルな制御要素とみなされます。一部のウィンドウシステムでは、ウィンドウマネージャによってウィンドウがシーングラフ(キャンバス)に直接追加され、様々な方法で重ねて配置することができます。各ウィンドウは特定のアプリケーションに関連付けられており、そのアプリケーションはキャンバスに追加されたウィジェットを制御します。これらのウィジェットは、関連付けられたアプリケーションによって監視および変更できます。
参照
参考文献
- ^ユーザーインターフェースソフトウェアツールの過去、現在、そして未来. Brad Myers, Scott E. Hudson, Randy Pausch, Y Pausch. ACM Transactions on Computer-Human Interaction, 2000. [1]
- ^ Samek, Miro (2003年4月). 「Who Moved My State?」 C/C++ Users Journal, The Embedded Angleコラム.