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 で使用できるようにすることで、設計者はプレースホルダウィジェットではなく、アプリケーションで使用される実際のウィジェットを使用してユーザーインターフェイスを構成することができます。カスタムウィジェットプラグインの作成方法は、本マニュアルのQt Widgets Designer用のカスタムウィジェットの作成の章で説明します。
この方法で作成したプラグインを使用するには、Qt Widgets Designerがプラグインを検索するパスにプラグインがあることを確認する必要があります。通常、$QTDIR/plugins/designer
に保存されたプラグインは Qt Widgets Designer の起動時にロードされます。プラグインの構築とインストールの詳細については、こちらを参照してください。プラグインの作成については、Plugins HOWTOドキュメントも参照してください。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。