でカスタムウィジェットを使うQt Widgets Designer
Qt Widgets Designer は、拡張可能なプラグイン機構によってカスタムウィジェットを表示することができ、ユーザやサードパーティによってデザイン可能なウィジェットの範囲を拡張することができます。また、同様のAPIを提供するウィジェットクラスのプレースホルダとして、既存のウィジェットを使用することも可能です。
カスタムウィジェットの取り扱い
Qt Widgets Designer は標準 Qt ウィジェットをすべてサポートしていますが、いくつかの特殊なウィジェットは、さまざまな理由で標準では利用できない場合があります:
- カスタムウィジェットは、ユーザーインターフェイスを設計している時点では利用できない可能性があります。
- カスタムウィジェットはプラットフォーム固有であり、設計者はエンドユーザとは異なるプラットフォームでユーザインタフェースを開発している可能性があります。
- カスタムウィジェットのソースコードが利用できない、あるいはユーザインタフェース設計者が非技術的な理由でウィジェットを利用できない。
上記のような状況でも、アプリケーションでカスタムウィジェットを使用する目的でフォームを設計することは可能です。これを実現するには、Qt Widgets Designer のウィジェット・プロモーション機能を使用します。
その他のすべてのケースでは、カスタムウィジェットのソースコードが利用できる場合、カスタムウィジェットをQt Widgets Designer で使用できるようにすることができます。
ウィジェットのプロモーション

あるフォームを設計しなければならないが、あるカスタムウィジェットが設計者に利用できない場合、類似のウィジェットで足りないウィジェットを代用することができます。たとえば、カスタム・プッシュ・ボタン・クラスMyPushButton のインスタンスをQPushButton のインスタンスで表し、これらをMyPushButton に昇格させることで、uic がこの欠落したクラスに適したコードを生成します。
プレースホルダとして使用するウィジェットを選択する場合、不足するウィジェットの API を標準 Qt ウィジェットの API と比較すると便利です。標準クラスをサブクラス化した特殊なウィジェットの場合、プレースホルダの選択は、カスタムウィジェットの基底クラスであることが明らかです。例えば、QSlider の特殊なサブクラスには、QSlider が使用されるかもしれません。
標準の Qt ウィジェットと共通の API を持たない特殊なウィジェットの場合、カスタムウィジェットをQt Widgets Designer に適合させることを検討する価値があります。これが不可能な場合、QWidget がすべてのウィジェットの最小公倍数であるため、プレースホルダウィジェットの明らかな選択肢となります。
プレースホルダを追加するには、適切な基本クラスのオブジェクトを選択し、フォームのコンテキストメニューから「...にプロモート」を選択します。ダイアログの下部にクラス名とヘッダーファイルを入力したら、Addを選択します。これで、プレースホルダ・クラスがベース・クラスとともに上部のリストに表示されます。この選択を受け入れるには、プロモートボタンをクリックします。
これで、フォームのコンテキスト・メニューがベース・クラスのオブジェクトの上で開かれたとき、プレースホルダ・クラスがプロモート先のサブメニューに表示され、オブジェクトをそのクラスに便利にプロモートできるようになります。
昇格されたウィジェットは、フォームのコンテキストメニューからDemote toを選択することで、ベースクラスに戻すことができます。
ユーザー定義のカスタムウィジェット
カスタムウィジェットは、Qt Widgets Designer で使用するために適合させることができ、デザイナーは、プレースホルダウィジェットではなく、アプリケーションで使用される実際のウィジェットを使用してユーザーインターフェイスを構成する機会を得ることができます。カスタムウィジェットプラグインの作成方法は、本マニュアルの「 Qt Widgets Designer 用カスタムウィジェットの作成」の章で説明します。
この方法で作成したプラグインを使用するには、Qt Widgets Designer がプラグインを検索するパスにプラグインがあることを確認する必要があります。通常、$QTDIR/plugins/designer に保存されたプラグインは、Qt Widgets Designer の起動時にロードされます。プラグインの構築とインストールに関する詳しい情報は、こちらをご覧ください。また、プラグインの作成については、Plugins HOWTOドキュメントを参照してください。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.