QDesignerCustomWidgetInterface Class
La clase QDesignerCustomWidgetInterface permite a Qt Widgets Designer acceder y construir widgets personalizados. Más...
| Cabecera: | #include <QDesignerCustomWidgetInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
Funciones públicas
| 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 |
Macros
Descripción Detallada
QDesignerCustomWidgetInterface proporciona un widget personalizado con una interfaz. La clase contiene un conjunto de funciones que deben ser subclasificadas para devolver información básica sobre el widget, como su nombre de clase y el nombre de su archivo de cabecera. Deben implementarse otras funciones para inicializar el plugin cuando se carga, y para construir instancias del widget personalizado para que lo utilice Qt Widgets Designer.
Cuando implementes un widget personalizado debes subclasificar QDesignerCustomWidgetInterface para exponer tu widget a Qt Widgets Designer. Por ejemplo, esta es la declaracion para el plugin usado en el ejemplo Custom Widget Plugin que permite que un widget de reloj analogico sea usado por 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; };
Observa que la única parte de la definición de la clase que es específica de este widget personalizado en particular es el nombre de la clase. Además, puesto que estamos implementando una interfaz, debemos asegurarnos de que se da a conocer al sistema de metaobjetos mediante la macro Q_INTERFACES(). Esto permite a Qt Widgets Designer utilizar la función qobject_cast() para buscar interfaces compatibles utilizando únicamente un puntero QObject.
Después de que Qt Widgets Designer cargue un plugin de widget personalizado, llama a la función initialize() de la interfaz para permitirle configurar cualquier recurso que pueda necesitar. Esta función se llama con un parámetro QDesignerFormEditorInterface que proporciona al plugin una puerta de acceso a toda la API de Qt Widgets Designer.
Qt Widgets Designer construye instancias del widget personalizado llamando a la función createWidget() del plugin con un widget padre adecuado. Los plugins deben construir y devolver una instancia de un widget personalizado con el widget padre especificado.
Exporte su plugin de widget personalizado a Qt Widgets Designer utilizando la macro Q_PLUGIN_METADATA(). Por ejemplo, si una biblioteca llamada libcustomwidgetplugin.so (en Unix) o libcustomwidget.dll (en Windows) contiene una clase widget llamada MyCustomWidget, podemos exportarla añadiendo la siguiente línea al archivo que contiene la cabecera del plugin:
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")Esta macro garantiza que Qt Widgets Designer pueda acceder al widget personalizado y construirlo. Sin esta macro, no hay forma de que Qt Widgets Designer pueda utilizarlo.
Cuando implementas un plugin de widget personalizado, lo construyes como una librería separada. Si quieres incluir varios plugins de widgets personalizados en la misma biblioteca, debes además subclasificar QDesignerCustomWidgetCollectionInterface.
Advertencia: Si tu plugin de widget personalizado contiene propiedades QVariant, ten en cuenta que sólo se soportan las siguientes types:
- QVariant::ByteArray
- QVariant::Bool
- QVariant::Color
- QVariant::Cursor
- QVariant::Fecha
- QVariant::DateTime
- QVariant::Double
- QVariante::Int
- QVariant::Punto
- QVariant::Rect
- QVariant::Tamaño
- QVariant::PolíticaTamaño
- QVariant::Cadena
- QVariant::Tiempo
- QVariante::UInt
Para ver un ejemplo completo utilizando la clase QDesignerCustomWidgetInterface, consulta el Ejemplo de Widget Personalizado. El ejemplo muestra cómo crear un plugin de widget personalizado para Qt Widgets Designer.
Consulte también QDesignerCustomWidgetCollectionInterface y Creación de widgets personalizados para Qt Widgets Designer.
Documentación de funciones miembro
[virtual constexpr noexcept] QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
Destruye la interfaz del widget personalizado.
[virtual] QString QDesignerCustomWidgetInterface::codeTemplate() const
Esta función está reservada para un uso futuro en Qt Widgets Designer.
[pure virtual] QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
Devuelve una nueva instancia del widget personalizado, con la dirección parent.
[virtual] QString QDesignerCustomWidgetInterface::domXml() const
Devuelve el XML que se utiliza para describir las propiedades del widget personalizado a Qt Widgets Designer.
[pure virtual] QString QDesignerCustomWidgetInterface::group() const
Devuelve el nombre del grupo al que pertenece el widget personalizado.
[pure virtual] QIcon QDesignerCustomWidgetInterface::icon() const
Devuelve el icono utilizado para representar el widget personalizado en el cuadro de widgets de Qt Widgets Designer.
[pure virtual] QString QDesignerCustomWidgetInterface::includeFile() const
Devuelve la ruta al archivo de inclusión que uic utiliza al crear código para el widget personalizado.
[virtual] void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
Inicializa el widget para su uso con la interfaz formEditor especificada.
Véase también isInitialized().
[pure virtual] bool QDesignerCustomWidgetInterface::isContainer() const
Devuelve true si el widget personalizado está destinado a ser utilizado como contenedor; en caso contrario devuelve false.
La mayoría de los widgets personalizados no se utilizan para contener otros widgets, por lo que sus implementaciones de esta función devolverán false, pero los contenedores personalizados devolverán true para garantizar que se comportan correctamente en Qt Widgets Designer.
[virtual] bool QDesignerCustomWidgetInterface::isInitialized() const
Devuelve true si el widget ha sido inicializado; en caso contrario devuelve false.
Véase también initialize().
[pure virtual] QString QDesignerCustomWidgetInterface::name() const
Devuelve el nombre de clase del widget personalizado proporcionado por la interfaz.
El nombre devuelto debe ser idéntico al nombre de clase utilizado para el widget personalizado.
[pure virtual] QString QDesignerCustomWidgetInterface::toolTip() const
Devuelve una breve descripción del widget que puede ser utilizada por Qt Widgets Designer en un tool tip.
[pure virtual] QString QDesignerCustomWidgetInterface::whatsThis() const
Devuelve una descripción del widget que puede ser utilizada por Qt Widgets Designer en la ayuda "¿Qué es esto?" para el widget.
Documentación de macros
QDESIGNER_WIDGET_EXPORT
Esta macro se utiliza al definir widgets personalizados para garantizar que se exportan correctamente desde los plugins para su uso con Qt Widgets Designer.
En algunas plataformas, los símbolos requeridos por Qt Widgets Designer para crear nuevos widgets son eliminados de los plugins por el sistema de compilación, haciéndolos inutilizables. El uso de esta macro garantiza que los símbolos se conserven en esas plataformas y no tiene efectos secundarios en otras plataformas.
Por ejemplo, el ejemplo de plugin de widget personalizado exporta una clase de widget personalizado con la siguiente declaración:
class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget { Q_OBJECT ... };
Consulte también Creación de widgets personalizados para Qt Widgets Designer.
© 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.