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 プロパティを含む場合、次の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

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.