Sur cette page

QDesignerTaskMenuExtension Class

La classe QDesignerTaskMenuExtension vous permet d'ajouter des entrées de menu personnalisées au menu des tâches de Qt Widgets Designer. Plus d'informations...

En-tête : #include <QDesignerTaskMenuExtension>
CMake : find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake : QT += designer

Fonctions publiques

virtual ~QDesignerTaskMenuExtension()
virtual QAction *preferredEditAction() const
virtual QList<QAction *> taskActions() const = 0

Description détaillée

QDesignerTaskMenuExtension fournit une interface permettant de créer des extensions de menu de tâches personnalisées. Elle est typiquement utilisée pour créer des entrées de menu de tâches qui sont spécifiques à un plugin dans Qt Widgets Designer.

Qt Widgets Designer utilise l'extension QDesignerTaskMenuExtension pour alimenter son menu des tâches. Chaque fois qu'un menu de tâches est demandé, Qt Widgets Designer demande l'extension du menu de tâches du widget sélectionné.

Capture d'écran d'une action personnalisée "Edit State..." dans un menu contextuel de <span translate=Qt Widgets Designer." src="images/taskmenuextension-example.webp" title="Capture d'écran d'une action personnalisée "Edit State..." dans un menu contextuel de Qt Widgets Designer."/>

Une extension de menu de tâches est une collection de QActions. Les actions apparaissent en tant qu'entrées dans le menu des tâches lorsque le plugin avec l'extension spécifiée est sélectionné. L'image ci-dessus montre l'action personnalisée Edit State... qui apparaît en plus des entrées du menu des tâches par défaut de Qt Widgets Designer: Couper, Copier, Coller, etc.

Pour créer une extension de menu des tâches personnalisée, votre classe d'extension doit hériter à la fois de QObject et de QDesignerTaskMenuExtension. Par exemple :

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;
};

Étant donné que nous mettons en œuvre une interface, nous devons nous assurer qu'elle est connue du système de méta-objets à l'aide de la macro Q_INTERFACES(). Cela permet à Qt Widgets Designer d'utiliser la fonction qobject_cast() pour rechercher les interfaces prises en charge en n'utilisant rien d'autre qu'un pointeur QObject.

Vous devez réimplémenter la fonction taskActions() pour renvoyer une liste d'actions qui seront incluses dans le menu des tâches de Qt Widgets Designer. En option, vous pouvez réimplémenter la fonction preferredEditAction() pour définir l'action qui est invoquée lorsque vous sélectionnez votre plugin et que vous appuyez sur la touche F2. L'action d'édition préférée doit être l'une des actions renvoyées par taskActions() et, si elle n'est pas définie, l'appui sur la touche F2 sera simplement ignoré.

Dans Qt Widgets Designer, les extensions ne sont pas créées tant qu'elles ne sont pas nécessaires. Une extension de menu de tâches, par exemple, est créée lorsque vous cliquez avec le bouton droit de la souris sur un widget dans l'espace de travail de Qt Widgets Designer. Pour cette raison, vous devez également construire une fabrique d'extensions, en utilisant soit QExtensionFactory soit une sous-classe, et l'enregistrer en utilisant extension manager de Qt Widgets Designer.

Lorsqu'une extension du menu des tâches est requise, extension manager de Qt Widgets Designer parcourt toutes les fabriques enregistrées en appelant QExtensionFactory::createExtension() pour chacune d'entre elles jusqu'à ce qu'il en trouve une capable de créer une extension du menu des tâches pour le widget sélectionné. Cette fabrique créera alors une instance de l'extension.

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

La classe QExtensionFactory fournit une fabrique d'extensions standard et peut également être utilisée comme interface pour des fabriques d'extensions personnalisées. Vous pouvez soit créer un nouveau 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(QDesignerTaskMenuExtension))
        return 0;

    if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object))
        return new MyTaskMenuExtension(widget, parent);

    return 0;
}

Vous pouvez également utiliser une fabrique existante, en étendant la fonction QExtensionFactory::createExtension() pour que la fabrique puisse également créer une extension de menu de tâches. Par exemple :

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;
    }
}

Pour un exemple complet utilisant la classe QDesignerTaskMenuExtension, voir l'exemple d'extension de menu de tâches. L'exemple montre comment créer un plugin de widget personnalisé pour Qt Widgets Designer, et comment utiliser la classe QDesignerTaskMenuExtension pour ajouter des éléments personnalisés au menu des tâches de Qt Widgets Designer.

Voir également QExtensionFactory, QExtensionManager, et Création d'extensions de widgets personnalisés.

Documentation des fonctions membres

[virtual noexcept] QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()

Détruit l'extension du menu des tâches.

[virtual] QAction *QDesignerTaskMenuExtension::preferredEditAction() const

Renvoie l'action qui est invoquée lorsque l'on sélectionne un plugin avec l'extension spécifiée et que l'on appuie sur la touche F2.

L'action doit être l'une des actions renvoyées par taskActions().

[pure virtual] QList<QAction *> QDesignerTaskMenuExtension::taskActions() const

Renvoie l'extension du menu des tâches sous la forme d'une liste d'actions qui seront incluses dans le menu des tâches de Qt Widgets Designer lorsqu'un plugin ayant l'extension spécifiée est sélectionné.

La fonction doit être réimplémentée pour ajouter des actions à la liste.

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