Sur cette page

QExtensionFactory Class

La classe QExtensionFactory vous permet de créer une fabrique capable de générer des instances d'extensions personnalisées dans Qt Designer. En savoir 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 de :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 le concepteur d'Qt Widgets, les extensions ne sont créées qu'au moment où elles sont requises. C'est pourquoi, lorsque vous implémentez une extension personnalisée, vous devez également créer une classe QExtensionFactory, c'est-à-dire une classe capable de créer une instance de votre extension, et l'enregistrer à l'aide de la méthode extension manager du concepteur d'Qt Widgets.

La classe ` QExtensionManager ` fournit des fonctionnalités de gestion des extensions pour le Designer d’ Qt Widgets. Lorsqu’une extension est requise, la méthode ` extension manager ` de ` Qt Designer` parcourt toutes les fabriques enregistrées en appelant ` QExtensionFactory::createExtension()` pour chacune d’entre elles, jusqu’à ce que la première capable de créer l’extension demandée pour l’objet sélectionné soit trouvée. Cette fabrique créera alors une instance de l’extension.

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

Vous pouvez soit créer une nouvelle classe `QExtensionFactory` et réimplémenter la fonction ` QExtensionFactory::createExtension()`. Par exemple :

        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 bien vous pouvez utiliser une fabrique existante, en étendant la fonction ` QExtensionFactory::createExtension()` afin 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`, consultez l’exemple « Extension du menu des tâches ». Cet 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 du concepteur d’ Qt Widgets.

Voir également QExtensionManager et QAbstractExtensionFactory.

Documentation sur les fonctions membres

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

Crée une fabrique d'extensions à partir de l'parent on fournie.

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

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

Voir également 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'object` donné.

Voir aussi createExtension().

QExtensionManager *QExtensionFactory::extensionManager() const

Renvoie le gestionnaire d'extensions associé à l'usine d'extensions.

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