Sur cette page

QExtensionFactory Class

La classe QExtensionFactory vous permet de créer une fabrique capable de créer des instances d'extensions personnalisées dans Qt Designer. Plus...

En-tête : #include <QExtensionFactory>
CMake : find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake : QT += designer
Hérite : QObject et QAbstractExtensionFactory

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Fonctions protégées

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

Description détaillée

Dans Qt Widgets Designer, les extensions ne sont pas créées tant qu'elles ne sont pas nécessaires. C'est pourquoi, lorsque vous implémentez une extension personnalisée, vous devez également créer une QExtensionFactory, c'est-à-dire une classe capable de créer une instance de votre extension et de l'enregistrer à l'aide de Qt Widgets Designer's extension manager.

La classe QExtensionManager fournit des fonctions de gestion des extensions pour Qt Widgets Designer. Lorsqu'une extension est requise, la classe extension manager de Qt Designer passe en revue toutes les usines enregistrées en appelant QExtensionFactory::createExtension() pour chacune d'elles, jusqu'à ce que la première usine capable de créer l'extension demandée pour l'objet sélectionné soit trouvée. Cette usine créera alors une instance de l'extension.

Il existe quatre types d'extensions disponibles dans Qt Widgets Designer: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension et QDesignerTaskMenuExtension. Le comportement de Qt Designer est le même, que l'extension demandée soit associée à un conteneur multipage, à une feuille de membre, à une feuille de propriété ou à un menu de tâches.

Vous pouvez soit créer une nouvelle QExtensionFactory et réimplémenter la fonction QExtensionFactory::createExtension(). Par exemple, vous pouvez utiliser une QExtensionFactory existante :

        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;
        }

Ou vous pouvez utiliser une fabrique existante, en étendant la fonction QExtensionFactory::createExtension() pour que la fabrique puisse également créer votre extension. Par exemple :

        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;
        }

Pour un exemple complet utilisant la classe QExtensionFactory, voir l'exemple Task Menu Extension. L'exemple montre comment créer un plugin de widget personnalisé pour Qt Designer et comment utiliser la classe QDesignerTaskMenuExtension pour ajouter des éléments personnalisés au menu des tâches de Qt Widgets Designer.

Voir également QExtensionManager et QAbstractExtensionFactory.

Documentation sur les fonctions membres

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

Construit une usine d'extension avec l'adresse parent.

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

Crée une extension spécifiée par iid pour l'objet object donné. L'objet extension est créé en tant qu'enfant de l'objet parent spécifié.

Voir aussi extension().

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

Réimplémente : QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const.

Renvoie l'extension spécifiée par iid pour l'objet object.

Voir également createExtension().

QExtensionManager *QExtensionFactory::extensionManager() const

Renvoie le gestionnaire d'extension pour l'usine d'extension.

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