QDesignerCustomWidgetInterface Class
QDesignerCustomWidgetInterface クラスは、Qt Widgets Designer がカスタムウィジェットにアクセスして構築できるようにします。詳細...
ヘッダー | #include <QDesignerCustomWidgetInterface> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
パブリック関数
virtual | ~QDesignerCustomWidgetInterface() |
virtual QString | codeTemplate() const |
virtual QWidget * | createWidget(QWidget *parent) = 0 |
virtual QString | domXml() const |
virtual QString | group() const = 0 |
virtual QIcon | icon() const = 0 |
virtual QString | includeFile() const = 0 |
virtual void | initialize(QDesignerFormEditorInterface *formEditor) |
virtual bool | isContainer() const = 0 |
virtual bool | isInitialized() const |
virtual QString | name() const = 0 |
virtual QString | toolTip() const = 0 |
virtual QString | whatsThis() const = 0 |
マクロ
詳細説明
QDesignerCustomWidgetInterfaceは、インターフェイスを持つカスタムウィジェットを提供します。このクラスには、クラス名やヘッダー・ファイル名など、ウィジェットに関する基本情報を返すためにサブクラス化する必要がある一連の関数が含まれています。その他の関数は、プラグインがロードされたときに初期化し、Qt Widgets Designer が使用するカスタムウィジェットのインスタンスを構築するために実装する必要があります。
カスタム ウィジェットを実装する場合は、QDesignerCustomWidgetInterface をサブクラス化して、ウィジェットをQt Widgets Designer に公開する必要があります。例えば、これはCustom Widget Pluginの例で使用されるプラグインの宣言で、アナログ時計のカスタムウィジェットをQt Widgets Designerで使用できるようにします:
class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") Q_INTERFACES(QDesignerCustomWidgetInterface) public: explicit AnalogClockPlugin(QObject *parent = nullptr); bool isContainer() const override; bool isInitialized() const override; QIcon icon() const override; QString domXml() const override; QString group() const override; QString includeFile() const override; QString name() const override; QString toolTip() const override; QString whatsThis() const override; QWidget *createWidget(QWidget *parent) override; void initialize(QDesignerFormEditorInterface *core) override; private: bool initialized = false; };
クラス定義のうち、この特定のカスタムウィジェットに固有の部分はクラス名だけであることに注意してください。また、インターフェイスを実装しているため、Q_INTERFACES() マクロを使用してメタ オブジェクト システムに知らせる必要があります。これにより、Qt Widgets Designer はqobject_cast() 関数を使用して、QObject ポインタのみを使用してサポートされているインターフェイスを照会できます。
Qt Widgets Designerがカスタムウィジェットプラグインをロードした後、インターフェイスのinitialize ()関数を呼び出して、必要なリソースをセットアップできるようにします。この関数はQDesignerFormEditorInterface パラメータとともに呼び出され、プラグインにQt Widgets Designer のすべての API へのゲートウェイを提供します。
Qt Widgets Designer は、適切な親ウィジェットを使用してプラグインの () 関数を呼び出すことで、カスタムウィジェットのインスタンスを構築します。プラグインは、指定された親ウィジェットでカスタムウィジェットのインスタンスを構築して返す必要があります。createWidget
Q_PLUGIN_METADATA() マクロを使用して、カスタムウィジェットプラグインをQt Widgets Designer にエクスポートします。たとえば、libcustomwidgetplugin.so
(Unix の場合)またはlibcustomwidget.dll
(Windows の場合)というライブラリにMyCustomWidget
というウィジェット・クラスが含まれている場合、プラグイン・ヘッダを含むファイルに次の行を追加することでエクスポートできます:
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
このマクロにより、Qt Widgets Designer がカスタム ウィジェットにアクセスして構築できるようになります。このマクロがないと、Qt Widgets Designer で使用できません。
カスタムウィジェットプラグインを実装する場合、別のライブラリとして構築します。複数のカスタム ウィジェット プラグインを同じライブラリに含める場合は、さらにQDesignerCustomWidgetCollectionInterface をサブクラス化する必要があります。
- QVariant::ByteArray
- QVariant::Bool
- QVariant::Color
- QVariant::Cursor
- QVariant::Date
- QVariant::DateTime
- QVariant::Double
- QVariant::Int
- QVariant::Point
- QVariant::Rect
- QVariant::Size
- QVariant::SizePolicy (サイズポリシー)
- QVariant::String
- QVariant::Time
- QVariant::UInt
QDesignerCustomWidgetInterfaceクラスを使用した完全な例については、カスタムウィジェットの例を参照してください。この例では、Qt Widgets Designer用のカスタムウィジェットプラグインを作成する方法を示します。
QDesignerCustomWidgetCollectionInterface および Qt Widgets Designer用のカスタムウィジェットの作成も参照してください 。
メンバ関数のドキュメント
[virtual constexpr noexcept]
QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
カスタムウィジェットのインターフェイスを破壊する。
[virtual]
QString QDesignerCustomWidgetInterface::codeTemplate() const
この機能はQt Widgets Designer で将来使用するために予約されています。
[pure virtual]
QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
カスタムウィジェットの新しいインスタンスを、与えられたparent で返します。
[virtual]
QString QDesignerCustomWidgetInterface::domXml() const
カスタムウィジェットのプロパティを記述するために使用される XML をQt Widgets Designer に返します。
[pure virtual]
QString QDesignerCustomWidgetInterface::group() const
カスタムウィジェットが属するグループ名を返します。
[pure virtual]
QIcon QDesignerCustomWidgetInterface::icon() const
Qt Widgets Designerのウィジェットボックスでカスタムウィジェットを表すために使用されるアイコンを返します。
[pure virtual]
QString QDesignerCustomWidgetInterface::includeFile() const
カスタムウィジェットのコードを作成するときにuic が使用するインクルードファイルへのパスを返します。
[virtual]
void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
指定されたformEditor インターフェースで使用するためにウィジェットを初期化します。
isInitialized()も参照 。
[pure virtual]
bool QDesignerCustomWidgetInterface::isContainer() const
カスタムウィジェットがコンテナとして使用される場合はtrueを返し、そうでない場合はfalseを返します。
ほとんどのカスタムウィジェットは、他のウィジェットを保持するために使用されないので、この関数の実装は false を返しますが、カスタムコンテナは、Qt Widgets Designer で正しく動作するように、true を返します。
[virtual]
bool QDesignerCustomWidgetInterface::isInitialized() const
ウィジェットが初期化されていればtrueを返し、そうでなければfalseを返します。
initialize()も参照してください 。
[pure virtual]
QString QDesignerCustomWidgetInterface::name() const
インタフェースが提供するカスタムウィジェットのクラス名を返します。
返される名前は、カスタムウィジェットに使用されるクラス名と同じでなければなりません。
[pure virtual]
QString QDesignerCustomWidgetInterface::toolTip() const
Qt Widgets Designerがツールチップで使用できるウィジェットの短い説明を返します。
[pure virtual]
QString QDesignerCustomWidgetInterface::whatsThis() const
Qt Widgets Designerの "What's This? "ヘルプで使用できるウィジェットの説明を返します。
マクロ・ドキュメント
QDESIGNER_WIDGET_EXPORT
このマクロはカスタムウィジェットを定義するときに使用し、Qt Widgets Designer で使用するためにプラグインから正しくエクスポートされるようにします。
一部のプラットフォームでは、Qt Widgets Designer が新しいウィジェットを作成するために必要なシンボルがビルドシステムによってプラグインから削除され、使用できなくなります。このマクロを使用すると、これらのプラットフォームでシンボルが保持され、他のプラットフォームへの副作用はありません。
たとえば、カスタムウィジェット・プラグインの例では、以下の宣言でカスタムウィジェット・クラスをエクスポートします:
class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget { Q_OBJECT ... };
Qt Widgets Designer 用のカスタムウィジェットの作成も参照してください 。
© 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.