QDesignerTaskMenuExtension Class
La clase QDesignerTaskMenuExtension le permite añadir entradas de menú personalizadas al menú de tareas de Qt Widgets Designer. Más...
| Cabecera: | #include <QDesignerTaskMenuExtension> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
Funciones públicas
| virtual | ~QDesignerTaskMenuExtension() |
| virtual QAction * | preferredEditAction() const |
| virtual QList<QAction *> | taskActions() const = 0 |
Descripción Detallada
QDesignerTaskMenuExtension proporciona una interfaz para crear extensiones de menú de tareas personalizadas. Se utiliza normalmente para crear entradas de menú de tareas específicas para un plugin en Qt Widgets Designer.
Qt Widgets Designer utiliza QDesignerTaskMenuExtension para alimentar su menú de tareas. Siempre que se solicite un menú de tareas, Qt Widgets Designer consultará la extensión del menú de tareas del widget seleccionado.

Una extensión del menú de tareas es una colección de QActions. Las acciones aparecen como entradas en el menú de tareas cuando se selecciona el plugin con la extensión especificada. La imagen anterior muestra la acción personalizada Editar estado... que aparece además de las entradas predeterminadas del menú de tareas de Qt Widgets Designer: Cortar, Copiar, Pegar, etc.
Para crear una extensión de menú de tareas personalizada, su clase de extensión debe heredar tanto de QObject como de QDesignerTaskMenuExtension. Por ejemplo:
class MyTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: MyTaskMenuExtension(MyCustomWidget *widget, QObject *parent); QAction *preferredEditAction() const; QList<QAction *> taskActions() const; private slots: void mySlot(); private: MyCustomWidget *widget; QAction *myAction; };
Como estamos implementando una interfaz, debemos asegurarnos de que se da a conocer al sistema de meta-objetos utilizando 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.
Debe reimplementar la función taskActions() para devolver una lista de acciones que se incluirán en el menú de tareas de Qt Widgets Designer. Opcionalmente, puede reimplementar la función preferredEditAction() para establecer la acción que se invoca al seleccionar su plugin y pulsar F2. La acción de edición preferida debe ser una de las acciones devueltas por taskActions() y, si no está definida, simplemente se ignorará la pulsación de la tecla F2.
En Qt Widgets Designer, las extensiones no se crean hasta que son necesarias. Una extensión del menú de tareas, por ejemplo, se crea al pulsar el botón derecho del ratón sobre un widget en el espacio de trabajo de Qt Widgets Designer. Por esa razón, también debe construir una fábrica de extensiones, utilizando QExtensionFactory o una subclase, y registrarla utilizando Qt Widgets Designer's extension manager.
Cuando se necesite una extensión del menú de tareas, Qt Widgets Designer's extension manager recorrerá todas sus fábricas registradas llamando a QExtensionFactory::createExtension() para cada una de ellas hasta que encuentre una que sea capaz de crear una extensión del menú de tareas para el widget seleccionado. Esta fábrica creará entonces una instancia de la extensión.
Hay cuatro tipos de extensiones disponibles en Qt Widgets Designer: QDesignerContainerExtension QDesignerTaskMenuExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension y QDesignerTaskMenuExtension. Qt Widgets El comportamiento de Designer es el mismo tanto si la extensión solicitada está asociada a un contenedor, a una hoja de miembros, a una hoja de propiedades o a 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(QDesignerTaskMenuExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object)) return new MyTaskMenuExtension(widget, parent); return 0; }
O puede utilizar una fábrica existente, ampliando la función QExtensionFactory::createExtension() para que la fábrica sea capaz de crear también una extensión del menú de tareas. Por ejemplo:
QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else { return 0; } }
Para un ejemplo completo utilizando la clase QDesignerTaskMenuExtension, ver el ejemplo de Extensión de Menú de Tareas. El ejemplo muestra cómo crear un plugin de widget personalizado para Qt Widgets Designer, y cómo utilizar la clase QDesignerTaskMenuExtension para añadir elementos personalizados al menú de tareas de Qt Widgets Designer.
Consulte también QExtensionFactory, QExtensionManager, y Creación de extensiones de widgets personalizados.
Documentación de funciones de miembros
[virtual noexcept] QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
Destruye la extensión del menú de tareas.
[virtual] QAction *QDesignerTaskMenuExtension::preferredEditAction() const
Devuelve la acción que se invoca al seleccionar un plugin con la extensión especificada y pulsar F2.
La acción debe ser una de las acciones devueltas por taskActions().
[pure virtual] QList<QAction *> QDesignerTaskMenuExtension::taskActions() const
Devuelve la extensión del menú de tareas como una lista de acciones que se incluirán en el menú de tareas de Qt Widgets Designer cuando se seleccione un complemento con la extensión especificada.
La función debe volver a implementarse para añadir acciones a la lista.
© 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.