QExtensionFactory Class
La clase QExtensionFactory permite crear una fábrica capaz de crear instancias de extensiones personalizadas en Qt Designer. Más...
| Cabecera: | #include <QExtensionFactory> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
| Hereda: | QObject y QAbstractExtensionFactory |
Funciones Públicas
| QExtensionFactory(QExtensionManager *parent = nullptr) | |
| QExtensionManager * | extensionManager() const |
Funciones públicas reimplementadas
| virtual QObject * | extension(QObject *object, const QString &iid) const override |
Funciones protegidas
| virtual QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
Descripción detallada
En Qt Widgets Designer las extensiones no se crean hasta que son necesarias. Por esa razón, cuando se implementa una extensión personalizada, se debe crear también una QExtensionFactory, es decir, una clase que sea capaz de crear una instancia de su extensión, y registrarla usando Qt Widgets Designer's extension manager.
La clase QExtensionManager proporciona facilidades de gestión de extensiones para Qt Widgets Designer. Cuando se necesita una extensión, Qt Designer's extension manager recorrerá todas sus fábricas registradas llamando a QExtensionFactory::createExtension() para cada una de ellas hasta encontrar la primera que sea capaz de crear una extensión solicitada para el objeto seleccionado. Esta fábrica creará entonces una instancia de la extensión.
Hay cuatro tipos de extensiones disponibles en Qt Widgets Designer: QDesignerContainerExtension QDesignerMemberSheetExtension QDesignerPropertySheetExtension QDesignerTaskMenuExtension Qt Designer 's comportamiento es el mismo si la extensión solicitada se asocia con un contenedor de varias páginas, una hoja de miembros, una hoja de propiedades o un menú de tareas.
Puedes crear un nuevo QExtensionFactory y reimplementar la función QExtensionFactory::createExtension(). por ejemplo:
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; }
O puedes utilizar una fábrica existente, ampliando la función QExtensionFactory::createExtension() para que la fábrica sea capaz de crear también tu extensión. Por ejemplo:
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; }
Para un ejemplo completo usando la clase QExtensionFactory, ver el ejemplo de Extensión del Menú de Tareas. El ejemplo muestra cómo crear un plugin de widget personalizado para Qt Designer, y cómo utilizar la clase QDesignerTaskMenuExtension para añadir elementos personalizados al menú de tareas de Qt Widgets Designer.
Véase también QExtensionManager y QAbstractExtensionFactory.
Documentación de funciones miembro
[explicit] QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)
Construye una fábrica de extensiones con la dirección parent.
[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
Crea una extensión especificada por iid para object. El objeto de extensión se crea como hijo del parent especificado.
Véase también extension().
[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const
Reimplementa: QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const.
Devuelve la extensión especificada por iid para el object dado.
Véase también createExtension().
QExtensionManager *QExtensionFactory::extensionManager() const
Devuelve el gestor de extensiones de la fábrica de extensiones.
© 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.