Widget とカスタムウィジェットを作成する
前回サクッと QtDesigner を仕様して UI を作って見ましたが
度々でてくる「Widget」というものがなにを指しているのか
まずは改めて説明をしたいと思います。
Widget
Widget とは、PySide の UI を構成するパーツの 1 単位です。
QtDesigner の画面を見てみると、ウィンドウに配置するためのパーツは
「ウィジェットボックス」に並べられています。
この1つづつがいわゆる「Widget」で、ここにあるものは PySide がデフォルトで
用意してくれている GUI のパーツになります。
PySide にある各種パーツはすべて「Widget」扱いになっていて
Window も配置するための Layout も Button 等のパーツもすべて Widget です。
それのなにが重要かというと
すべての Widget は「QWidget」クラスを継承していて、この QWidget 内の関数を
共通して使用することができるのです。
この QWidget は、すべての GUI のイベント(マウス、キーボード、その他諸々)を受け取って
処理をする機能と、描画をする機能を持っています。
なので、このクラスを継承している各 Widget は
それぞれ固有の機能と描画を持たせて、配置することで GUI を構成するようになります。
親子化
Widget は親子化されて構成されています。
どのように構成されているかは、オブジェクトインスペクタをみるとわかりやすいです。
この例の場合 Window > Layout > LineEdit のように構成されているのがわかります。
親子化すると、Show/Hide 時はまとめて適応されたり、
関数を使用して子の Widget をリストしたり、
まとめて操作したりすることができます。
Window
上記の通り、Widget は親子化されていますが
一番親のルートに当たる Widget は「Window」と呼ばれます。