このページでは

QExtensionFactory Class

QExtensionFactory クラスを使用すると、Qt Designer でカスタム拡張機能のインスタンスを作成できるファクトリを作成できます。詳細...

ヘッダー: #include <QExtensionFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer
継承元:QObject およびQAbstractExtensionFactory

パブリック関数

QExtensionFactory(QExtensionManager *parent = nullptr)
QExtensionManager *extensionManager() const

再実装されたパブリック関数

virtual QObject *extension(QObject *object, const QString &iid) const override

プロテクトされた関数

virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const

詳細な説明

Qt Widgets Designer では、拡張機能は必要になるまで作成されません。そのため、カスタム拡張機能を実装する際には、QExtensionFactory、つまり、その拡張機能のインスタンスを作成できるクラスも作成し、Qt Widgets Designer のextension manager を使用して登録する必要があります。

QExtensionManager クラスは、Qt Widgets Designer 向けの拡張機能管理機能を提供します。拡張機能が必要になると、Qt Designer のextension manager は、登録されているすべてのファクトリを順に処理し、各ファクトリに対してQExtensionFactory::createExtension()を呼び出します。これにより、選択されたオブジェクトに対して要求された拡張機能を作成できる最初のファクトリが見つかるまで処理が続けられます。そのファクトリが、拡張機能のインスタンスを作成します。

Qt Widgets Designer では、QDesignerContainerExtension 、QDesignerMemberSheetExtension 、QDesignerPropertySheetExtension 、QDesignerTaskMenuExtension の 4 種類の拡張機能が利用可能です。Qt Designer の動作は、要求された拡張機能がマルチページコンテナ、メンバーシート、プロパティシート、またはタスクメニューのいずれに関連付けられているかによって変わりません。

新しい QExtensionFactory を作成し、QExtensionFactory::createExtension() 関数を再実装することができます。例:

        QObject *ANewExtensionFactory::createExtension(QObject *object,
                const QString &iid, QObject *parent) const
        {
            if (iid != Q_TYPEID(QDesignerContainerExtension))
                return nullptr;

            if (auto *widget = qobject_cast<MyCustomWidget*>(object))
                return new MyContainerExtension(widget, parent);

            return nullptr;
        }

あるいは、既存のファクトリを使用し、QExtensionFactory::createExtension() 関数を拡張して、そのファクトリがあなたの拡張機能も作成できるようにすることもできます。例:

        QObject *AGeneralExtensionFactory::createExtension(QObject *object,
                const QString &iid, QObject *parent) const
        {
            auto *widget = qobject_cast<MyCustomWidget*>(object);
            if (!widget)
                return nullptr;

            if (iid == Q_TYPEID(QDesignerTaskMenuExtension))
                return new MyTaskMenuExtension(widget, parent);

            if (iid == Q_TYPEID(QDesignerContainerExtension))
                return new MyContainerExtension(widget, parent);

            return nullptr;
        }

QExtensionFactory クラスを使用した完全な例については、「タスクメニュー拡張」の例を参照してください。この例では、Qt Designer 用のカスタムウィジェットプラグインを作成する方法と、QDesignerTaskMenuExtension クラスを使用してQt Widgets Designer のタスクメニューにカスタム項目を追加する方法を示しています。

QExtensionManager およびQAbstractExtensionFactoryも参照してください 。

メンバ関数のドキュメント

[explicit] QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)

指定されたparent を使用して、拡張機能ファクトリを構築します。

[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const

指定された `iid ` で定義された拡張機能を、指定された `object` に対して作成します。この拡張機能オブジェクトは、指定された `parent` の子として作成されます。

extension()も参照してください 。

[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const

QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const の再実装です。

指定された `object` に対して、iid で指定された拡張子を返します。

createExtension()も参照してください 。

QExtensionManager *QExtensionFactory::extensionManager() const

その拡張機能ファクトリに対応する拡張機能マネージャーを返します。

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