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 がプレースホルダウィジェットとして最適です。

プレースホルダを追加するには、適切なベース・クラスのオブジェクトを選択し、フォームのコンテキスト・メニューから[Promote to ...]を選択します。ダイアログの下部にクラス名とヘッダーファイルを入力したら、Addを選択します。これで、プレースホルダ・クラスがベース・クラスとともに上部のリストに表示されます。この選択を受け入れるには、プロモートボタンをクリックします。

これで、フォームのコンテキスト・メニューがベース・クラスのオブジェクトの上で開かれたとき、プレースホルダ・クラスがプロモート先のサブメニューに表示され、オブジェクトをそのクラスに便利にプロモートできるようになります。

昇格したウィジェットは、フォームのコンテキストメニューからDemote toを選択することで、ベースクラスに戻すことができます。

ユーザー定義のカスタムウィジェット

カスタムウィジェットをQt Widgets Designer で使用できるようにすることで、デザイナーはプレースホルダウィジェットではなく、アプリケーションで使用される実際のウィジェットを使用してユーザーインターフェイスを構成できます。カスタムウィジェットプラグインの作成プロセスは、本マニュアルの「Creating Custom Widgets forQt Widgets Designer」の章で説明しています。

この方法で作成したプラグインを使用するには、Qt Widgets Designer がプラグインを検索するパスにプラグインがあることを確認する必要があります。通常、$QTDIR/plugins/designer に保存されたプラグインは、Qt Widgets Designer の起動時にロードされます。プラグインの構築とインストールに関する詳細は、こちらを参照してください。プラグインの作成については、『Plugins HOWTO』ドキュメントも参照してください。

© 2025 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.