QDesignerTaskMenuExtension Class
La classe QDesignerTaskMenuExtension vous permet d'ajouter des entrées de menu personnalisées au menu des tâches d'Qt Widgets Designer. En savoir plus...
| En-tête : | #include <QDesignerTaskMenuExtension> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake : | QT += designer |
Fonctions publiques
| QDesignerTaskMenuExtension() | |
| QDesignerTaskMenuExtension(const QDesignerTaskMenuExtension &) | |
| QDesignerTaskMenuExtension(QDesignerTaskMenuExtension &&) | |
| virtual | ~QDesignerTaskMenuExtension() |
| virtual QAction * | preferredEditAction() const |
| virtual QList<QAction *> | taskActions() const = 0 |
| QDesignerTaskMenuExtension & | operator=(QDesignerTaskMenuExtension &&) |
| QDesignerTaskMenuExtension & | operator=(const QDesignerTaskMenuExtension &) |
Description détaillée
QDesignerTaskMenuExtension fournit une interface permettant de créer des extensions personnalisées pour le menu des tâches. Elle est généralement utilisée pour créer des entrées de menu des tâches spécifiques à un plugin dans Qt Widgets Designer.
Qt Widgets Designer utilise QDesignerTaskMenuExtension pour alimenter son menu de tâches. Chaque fois qu’un menu de tâches est demandé, Qt Widgets Designer interroge l’extension du menu de tâches du widget sélectionné.
Qt Widgets Designer." src="images/taskmenuextension-example.webp" title="Capture d'écran d'une action personnalisée « Modifier l'état... » dans le menu contextuel de Qt Widgets Designer."/>
Une extension de menu de tâches est un ensemble de QActions. Ces actions apparaissent sous forme d’entrées dans le menu de tâches lorsque le plugin doté de l’extension spécifiée est sélectionné. L’image ci-dessus montre l’action personnalisée « Modifier l’état… » qui s’affiche en plus des entrées par défaut du menu de tâches d’ Qt Widgets Designer : Couper, Copier, Coller, etc.
Pour créer une extension de menu de 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;
};Comme nous implémentons une interface, nous devons nous assurer qu’elle est signalée au 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 utilisant uniquement un pointeur ` QObject `.
Vous devez réimplémenter la fonction taskActions() afin de renvoyer une liste d’actions qui seront incluses dans le menu des tâches d’ Qt Widgets Designer. Vous pouvez également réimplémenter la fonction ` preferredEditAction()` pour définir l’action qui sera invoquée lorsque l’utilisateur sélectionnera votre plugin et appuiera sur la touche F2. L’action d’édition préférée doit faire partie des actions renvoyées par ` taskActions()` ; si elle n’est pas définie, la pression sur la touche F2 sera simplement ignorée.
Qt Widgets Dans le Designer d’ Qt Widgets, les extensions ne sont créées qu’au moment où elles sont requises. 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 du Designer d’ Qt Widgets. C’est pourquoi vous devez également créer une fabrique d’extensions, en utilisant soit ` QExtensionFactory `, soit une sous-classe, et l’enregistrer à l’aide de la méthode ` extension manager` du Designer d’ .
Lorsqu’une extension de menu de tâches est requise, la méthode ` extension manager ` de Qt Widgets Designer parcourt toutes ses fabriques enregistrées en appelant ` QExtensionFactory::createExtension()` pour chacune d’entre elles jusqu’à ce qu’elle trouve celle capable de créer une extension de menu de tâches pour le widget sélectionné. Cette fabrique crée alors une instance de l’extension.
Il existe quatre types d’extensions disponibles dans Qt Widgets Designer : QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension et QDesignerTaskMenuExtension. Le comportement d’ Qt Widgets Designer est le même, que l’extension demandée soit associée à un conteneur, à une feuille de membres, à une feuille de propriétés ou à un menu de tâches.
La classe ` QExtensionFactory ` fournit une fabrique d’extensions standard et peut également servir d’interface pour des fabriques d’extensions personnalisées. Vous pouvez soit créer une nouvelle classe ` 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;
}Ou bien vous pouvez utiliser une fabrique existante, en étendant la fonction ` QExtensionFactory::createExtension()` afin 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`, consultez l’exemple « Extension du menu des tâches ». Cet exemple montre comment créer un plugin de widget personnalisé pour QDesigner ( Qt Widgets ) et comment utiliser la classe `QDesignerTaskMenuExtension` pour ajouter des éléments personnalisés au menu des tâches de QDesigner ( Qt Widgets ).
Voir également QExtensionFactory, QExtensionManager et Création d’extensions de widgets personnalisées.
Documentation sur les fonctions membres
[constexpr noexcept default] QDesignerTaskMenuExtension::QDesignerTaskMenuExtension()
Construit par défaut une instance de ` QDesignerTaskMenuExtension`.
[delete] QDesignerTaskMenuExtension::QDesignerTaskMenuExtension(const QDesignerTaskMenuExtension &)
Copie et construit une instance de ` QDesignerTaskMenuExtension`. Cette fonction est supprimée.
[delete] QDesignerTaskMenuExtension::QDesignerTaskMenuExtension(QDesignerTaskMenuExtension &&)
Crée par « move » une instance de ` QDesignerTaskMenuExtension`. Cette fonction est supprimée.
[virtual noexcept] QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
Supprime l'extension du menu des tâches.
[virtual] QAction *QDesignerTaskMenuExtension::preferredEditAction() const
Renvoie l'action qui est déclenchée lorsque l'on sélectionne un plugin portant l'extension spécifiée et que l'on appuie sur la touche F2.
L'action doit faire partie des actions renvoyées par la fonction 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 d'Qt Widgets Designer lorsqu'un plugin portant l'extension spécifiée est sélectionné.
Cette fonction doit être réimplémentée pour ajouter des actions à la liste.
[delete] QDesignerTaskMenuExtension &QDesignerTaskMenuExtension::operator=(QDesignerTaskMenuExtension &&)
La commande « move-assigns » attribue « other » à cette instance « QDesignerTaskMenuExtension ». Cette fonction est supprimée.
[delete] QDesignerTaskMenuExtension &QDesignerTaskMenuExtension::operator=(const QDesignerTaskMenuExtension &)
Copie et attribue « other » à cette instance « QDesignerTaskMenuExtension ». Cette fonction est supprimée.
© 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.