IT用語集 › プログラミング › Composite / Constraint ウィジェット (Xt)

Composite / Constraint ウィジェット (Xt)

プログラミング Svenska → 更新: 2026-10-21

子を持つことが許されたXtの2つのウィジェットクラス。Compositeは子のリストを持ってジオメトリを決め、Constraintは各子に追加のリソースを持たせることでXmFormのようなレイアウトコンテナを可能にする。

XtはUIを木として組み立てるが、枝を生やせるのは特定のノードだけである。基底クラスのCoreは、ウィンドウ・色・イベント処理を持つ矩形にすぎない。CompositeはこれにCoreを継承させ、子のリストと、コンテナが備えるべき3つのメソッドを加える。リストを保守する insert_child と delete_child、そして子が新しい大きさや位置を求めてきたときに答える geometry_manager だ。子は管理されない状態で作られ、XtManageChild して初めて表示される。そのとき change_managed が呼ばれ、コンテナがレイアウトを再計算する。ボタンは自分では動かない。親に頼み、親が「よい」「だめ」「代わりにこうして」と答える。

ConstraintはCompositeを継承し、さらに一つのことをする。各子に、親に属するが子に設定されるリソースのブロックを持たせるのだ。XmFormのボタンに XmNleftAttachment を、AthenaのFormに fromHoriz を指定できるのは、ボタンのクラスがフォームのことを何も知らないままこれが成り立つからである。ブロックは core.constraints から参照され、Constraintクラス自身の initialize が埋める。レイアウト規則はコンテナが持ち、値は子ごとに保存するというこのパターンは、TkのpackオプションやQtのレイアウトプロパティにも受け継がれた。第4のクラスShellは子をちょうど1つだけ持つCompositeで、専用の項目がある。

← 用語集に戻る