QDesignerPropertySheetExtension Class
La clase QDesignerPropertySheetExtension permite manipular las propiedades de un widget que se muestra en Qt Designer's editor de propiedades. Más...
| Cabecera: | #include <QDesignerPropertySheetExtension> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
Funciones públicas
| virtual | ~QDesignerPropertySheetExtension() |
| virtual int | count() const = 0 |
| virtual bool | hasReset(int index) const = 0 |
| virtual int | indexOf(const QString &name) const = 0 |
| virtual bool | isAttribute(int index) const = 0 |
| virtual bool | isChanged(int index) const = 0 |
| virtual bool | isEnabled(int index) const = 0 |
| virtual bool | isVisible(int index) const = 0 |
| virtual QVariant | property(int index) const = 0 |
| virtual QString | propertyGroup(int index) const = 0 |
| virtual QString | propertyName(int index) const = 0 |
| virtual bool | reset(int index) = 0 |
| virtual void | setAttribute(int index, bool attribute) = 0 |
| virtual void | setChanged(int index, bool changed) = 0 |
| virtual void | setProperty(int index, const QVariant &value) = 0 |
| virtual void | setPropertyGroup(int index, const QString &group) = 0 |
| virtual void | setVisible(int index, bool visible) = 0 |
Descripción detallada
QDesignerPropertySheetExtension proporciona una colección de funciones que se utilizan normalmente para consultar las propiedades de un widget, y para manipular la apariencia de las propiedades en el editor de propiedades. Por ejemplo:
QDesignerPropertySheetExtension *propertySheet = nullptr; QExtensionManager manager = formEditor->extensionManager(); propertySheet = qt_extension<QDesignerPropertySheetExtension*>(manager, widget); int index = propertySheet->indexOf(u"margin"_s); propertySheet->setProperty(index, 10); propertySheet->setChanged(index, true); delete propertySheet;
Tenga en cuenta que si cambia el valor de una propiedad utilizando la función QDesignerPropertySheetExtension::setProperty(), la pila de deshacer no se actualiza. Para asegurarse de que el valor de una propiedad puede ser revertido utilizando la pila de deshacer, debe utilizar la función QDesignerFormWindowCursorInterface::setProperty(), o su compañera setWidgetProperty(), en su lugar.
Al implementar un complemento de widget personalizado, el parámetro de la función QDesignerCustomWidgetInterface::initialize() proporciona un puntero al objeto QDesignerFormEditorInterface actual de Qt Widgets Designer (formEditor en el ejemplo anterior).
La hoja de propiedades, o cualquier otra extensión, puede recuperarse consultando el gestor de extensiones de Qt Widgets Designer mediante la función qt_extension(). Cuando quieras liberar la extensión, sólo tienes que borrar el puntero.
Todos los widgets tienen una hoja de propiedades por defecto que rellena el editor de propiedades de Qt Widgets Designer con las propiedades del widget (es decir, las definidas con la macro Q_PROPERTY()). Pero QDesignerPropertySheetExtension también proporciona una interfaz para crear extensiones de hojas de propiedades personalizadas.
Ten en cuenta las siguientes limitaciones:
- Qt Widgets Designer utiliza QDesignerPropertySheetExtension para alimentar su editor de propiedades. Siempre que se seleccione un widget en su área de trabajo, Qt Widgets Designer consultará la extensión de la hoja de propiedades del widget. Si el widget seleccionado tiene una extensión de hoja de propiedades implementada, esta extensión sustituirá a la hoja de propiedades por defecto.
- Los tipos de datos utilizados por la hoja de propiedades para algunas propiedades son tipos opacos personalizados de QVariant que contienen información adicional en lugar de tipos de datos Qt simples. Por ejemplo, este es el caso de las enumeraciones, banderas, iconos, pixmaps y cadenas.
- Qt Widgets El editor de propiedades de Designer no tiene ninguna implementación para manejar tipos Q_PROPERTY para tipos personalizados que han sido declarados con Q_DECLARE_METATYPE().
Para crear una extensión de hoja de propiedades, tu clase de extensión debe heredar tanto de QObject como de QDesignerPropertySheetExtension. A continuación, puesto que estamos implementando una interfaz, debemos asegurarnos de que se da a conocer al meta sistema de objetos mediante la macro Q_INTERFACES():
class MyPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) public: ... }
Esto permite a Qt Widgets Designer utilizar qobject_cast() para consultar las interfaces soportadas utilizando únicamente un puntero QObject.
En Qt Widgets Designer las extensiones no se crean hasta que son necesarias. Por este motivo, al implementar una extensión de hoja de propiedades, también debe crear una QExtensionFactory, es decir, una clase que sea capaz de crear una instancia de su extensión, y registrarla utilizando extension manager de Qt Widgets Designer.
Cuando se necesite una extensión de hoja de propiedades, Qt Widgets Designer's extension manager recorrerá todas las fábricas registradas llamando a QExtensionFactory::createExtension() para cada una de ellas hasta que encuentre la primera que pueda crear una extensión de hoja de propiedades para el widget seleccionado. Esta fábrica creará una instancia de la extensión. Si no se encuentra ninguna, Qt Widgets Designer utilizará la hoja de propiedades por defecto.
Hay cuatro tipos de extensiones disponibles en Qt Widgets Designer: QDesignerContainerExtension QDesignerMemberSheetExtension , QDesignerPropertySheetExtension y QDesignerTaskMenuExtension. El comportamiento de Qt Designer es el mismo independientemente de que la extensión solicitada esté asociada a un contenedor multipágina, una hoja de propiedades o un menú de tareas.
La clase QExtensionFactory proporciona una fábrica de extensiones estándar y también puede utilizarse como interfaz para fábricas de extensiones personalizadas. Puede 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(QDesignerPropertySheetExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyPropertySheetExtension(widget, parent); return 0; }
O puede utilizar una fábrica existente, ampliando la función QExtensionFactory::createExtension() para que la fábrica pueda crear también una extensión de hoja de propiedades. Por ejemplo:
QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerPropertySheetExtension))) { return new MyPropertySheetExtension(widget, parent); } else { return 0; } }
Para un ejemplo completo usando una clase de extensión, vea el ejemplo de Extensión del Menú de Tareas. El ejemplo muestra cómo crear un complemento 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.
Consulte también QDesignerDynamicPropertySheetExtension, QExtensionFactory, QExtensionManager, y Creación de extensiones de widgets personalizados.
Documentación de funciones miembro
[virtual constexpr noexcept] QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
Destruye la extensión de la hoja de propiedades.
[pure virtual] int QDesignerPropertySheetExtension::count() const
Devuelve el número de propiedades del widget seleccionado.
[pure virtual] bool QDesignerPropertySheetExtension::hasReset(int index) const
Devuelve true si la propiedad en el index dado tiene un botón de reinicio en el editor de propiedades de Qt Widgets Designer, de lo contrario false.
Véase también indexOf() y reset().
[pure virtual] int QDesignerPropertySheetExtension::indexOf(const QString &name) const
Devuelve el índice de una propiedad dada name.
Véase también propertyName().
[pure virtual] bool QDesignerPropertySheetExtension::isAttribute(int index) const
Devuelve true si la propiedad en el index dado es un atributo, que será excluido del archivo UI, de lo contrario false.
Véase también indexOf() y setAttribute().
[pure virtual] bool QDesignerPropertySheetExtension::isChanged(int index) const
Devuelve true si el valor de la propiedad en el index dado difiere del valor por defecto de la propiedad, en caso contrario false.
Véase también indexOf(), setChanged() y reset().
[pure virtual] bool QDesignerPropertySheetExtension::isEnabled(int index) const
Devuelve true si la propiedad en el index dado está habilitada en el editor de propiedades de Qt Widgets Designer, en caso contrario false.
Véase también indexOf().
[pure virtual] bool QDesignerPropertySheetExtension::isVisible(int index) const
Devuelve true si la propiedad en el index dado es visible en el editor de propiedades de Qt Widgets Designer, en caso contrario false.
Véase también indexOf() y setVisible().
[pure virtual] QVariant QDesignerPropertySheetExtension::property(int index) const
Devuelve el valor de la propiedad en la dirección index.
Véase también indexOf(), setProperty() y propertyGroup().
[pure virtual] QString QDesignerPropertySheetExtension::propertyGroup(int index) const
Devuelve el grupo de propiedades de la propiedad en la dirección index.
Qt Widgets El editor de propiedades de Designer soporta grupos de propiedades, es decir, secciones de propiedades relacionadas. Una propiedad puede relacionarse con un grupo utilizando la función setPropertyGroup(). El grupo por defecto de cualquier propiedad es el nombre de la clase que la define. Por ejemplo, la propiedad QObject::objectName aparece dentro del grupo de propiedades QObject.
Véase también indexOf() y setPropertyGroup().
[pure virtual] QString QDesignerPropertySheetExtension::propertyName(int index) const
Devuelve el nombre de la propiedad en la dirección index.
Véase también indexOf().
[pure virtual] bool QDesignerPropertySheetExtension::reset(int index)
Restablece el valor de la propiedad en la dirección index, al valor por defecto. Devuelve true si se ha encontrado un valor por defecto, en caso contrario false.
Véase también indexOf(), hasReset(), y isChanged().
[pure virtual] void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
Si attribute es verdadero, la propiedad en el index dado se convierte en un atributo que se excluirá del archivo de interfaz de usuario; de lo contrario, se incluirá.
Véase también indexOf() y isAttribute().
[pure virtual] void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
Establece si la propiedad en el index dado es diferente de su valor por defecto, o no, dependiendo del parámetro changed.
Véase también indexOf() y isChanged().
[pure virtual] void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
Establece el value de la propiedad en el index dado .
Advertencia: Si cambia el valor de una propiedad usando esta función, la pila de deshacer no se actualiza. Para asegurarse de que el valor de una propiedad puede ser revertido utilizando la pila de deshacer, debe utilizar la función QDesignerFormWindowCursorInterface::setProperty(), o su colega setWidgetProperty(), en su lugar.
Véase también indexOf(), property(), y propertyGroup().
[pure virtual] void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
Establece el grupo de propiedades para la propiedad en el index dado a group.
Relacionar una propiedad con un grupo hace que aparezca dentro de la sección de ese grupo en el editor de propiedades. El grupo de propiedades por defecto de cualquier propiedad es el nombre de la clase que la define. Por ejemplo, la propiedad QObject::objectName aparece dentro del grupo de propiedades QObject.
Véase también indexOf(), property(), y propertyGroup().
[pure virtual] void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
Si visible es verdadero, la propiedad en el index dado es visible en el editor de propiedades de Qt Widgets Designer; en caso contrario, la propiedad se oculta.
© 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.