このページでは

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 に公開する必要があります。例えば、これはアナログ時計のカスタムウィジェットを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 プロパティを含む場合、次のtypes のみがサポートされていることに注意してください:

  • 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

ウィジェットの "What's This? "ヘルプでQt Widgets Designer 、使用できるウィジェットの説明を返す。

マクロ・ドキュメント

QDESIGNER_WIDGET_EXPORT

このマクロは、カスタムウィジェットを定義するときに使用し、Qt Widgets Designer で使用するためにプラグインから正しくエクスポートされるようにします。

一部のプラットフォームでは、Qt Widgets Designer が新しいウィジェットを作成するために必要なシンボルが、ビルドシステムによってプラグインから削除され、使用できなくなります。このマクロを使用することで、これらのプラットフォームでシンボルが保持され、他のプラットフォームへの副作用はありません。

たとえば、カスタムウィジェット・プラグインの例では、以下の宣言でカスタムウィジェット・クラスをエクスポートします:

class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget
{
    Q_OBJECT
    ...
};

Qt Widgets Designer 用のカスタムウィジェットの作成も参照してください

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