QDesignerMemberSheetExtension Class
La classe QDesignerMemberSheetExtension vous permet de manipuler les fonctions membres d'un widget qui s'affichent lors de la configuration des connexions à l'aide du mode d'édition des signaux et des slots de Qt Widgets Designer. Plus d'informations...
| En-tête : | #include <QDesignerMemberSheetExtension> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake : | QT += designer |
Fonctions publiques
| virtual | ~QDesignerMemberSheetExtension() |
| virtual int | count() const = 0 |
| virtual QString | declaredInClass(int index) const = 0 |
| virtual int | indexOf(const QString &name) const = 0 |
| virtual bool | inheritedFromWidget(int index) const = 0 |
| virtual bool | isSignal(int index) const = 0 |
| virtual bool | isSlot(int index) const = 0 |
| virtual bool | isVisible(int index) const = 0 |
| virtual QString | memberGroup(int index) const = 0 |
| virtual QString | memberName(int index) const = 0 |
| virtual QList<QByteArray> | parameterNames(int index) const = 0 |
| virtual QList<QByteArray> | parameterTypes(int index) const = 0 |
| virtual void | setMemberGroup(int index, const QString &group) = 0 |
| virtual void | setVisible(int index, bool visible) = 0 |
| virtual QString | signature(int index) const = 0 |
Description détaillée
QDesignerMemberSheetExtension est une collection de fonctions typiquement utilisées pour interroger les fonctions membres d'un widget et pour manipuler l'apparence des fonctions membres dans le mode d'édition des signaux et des fentes de Qt Widgets Designer. Par exemple, lors de l'implémentation d'un plugin de widget personnalisé :
QDesignerMemberSheetExtension *memberSheet = nullptr; QExtensionManager manager = formEditor->extensionManager(); memberSheet = qt_extension<QDesignerMemberSheetExtension*>(manager, widget); int index = memberSheet->indexOf(setEchoMode); memberSheet->setVisible(index, false); delete memberSheet;
Lors de l'implémentation d'un plugin de widget personnalisé, un pointeur sur l'objet QDesignerFormEditorInterface actuel de Qt Widgets Designer(formEditor dans l'exemple ci-dessus) est fourni par le paramètre de la fonction QDesignerCustomWidgetInterface::initialize().
La feuille de membre (et toute autre extension) peut être récupérée en interrogeant le gestionnaire d'extensions de Qt Widgets Designer à l'aide de la fonction qt_extension(). Lorsque vous souhaitez libérer l'extension, il vous suffit de supprimer le pointeur.
Tous les widgets ont une feuille de membre par défaut utilisée dans le mode d'édition des signaux et des fentes de Qt Widgets Designer avec les fonctions membres du widget. Mais QDesignerMemberSheetExtension fournit également une interface pour créer des extensions de feuilles de membres personnalisées.
Attention : Qt Widgets Designer utilise QDesignerMemberSheetExtension pour faciliter le mode d'édition des signaux et des emplacements. Chaque fois qu'une connexion entre deux widgets est demandée, Qt Widgets Designer demande les extensions de feuille de membre des widgets. Si un widget possède une extension de feuille de membre implémentée, cette extension remplacera la feuille de membre par défaut.
Pour créer une extension de feuille de membre, votre classe d'extension doit hériter à la fois de QObject et de QDesignerMemberSheetExtension. Ensuite, comme nous implémentons une interface, nous devons nous assurer qu'elle est connue du système de métaobjets à l'aide de la macro Q_INTERFACES() :
class MyMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: ... }
Cela permet à Qt Widgets Designer d'utiliser qobject_cast() pour rechercher les interfaces prises en charge en n'utilisant rien d'autre qu'un pointeur QObject.
Dans Qt Widgets Designer, les extensions ne sont pas créées tant qu'elles ne sont pas nécessaires. C'est pourquoi, lorsque vous implémentez une extension de feuille de membre, vous devez également créer une classe QExtensionFactory, c'est-à-dire une classe capable de créer une instance de votre extension et de l'enregistrer à l'aide de la classe extension manager de Qt Widgets Designer.
Lorsque l'extension de la feuille de membre d'un widget est requise, Qt Widgets Designer's extension manager passera en revue toutes ses usines enregistrées en appelant QExtensionFactory::createExtension() pour chacune d'entre elles jusqu'à ce que la première capable de créer une extension de la feuille de membre pour ce widget soit trouvée. Cette fabrique créera alors une instance de l'extension. Si aucune usine de ce type n'est trouvée, Qt Widgets Designer utilisera la feuille de membre par défaut.
Quatre types d'extensions sont disponibles dans Qt Widgets Designer: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension et QDesignerTaskMenuExtension. Le comportement de Qt Widgets Designer est le même, que l'extension demandée soit associée à un conteneur multipage, à 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(QDesignerMemberSheetExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyMemberSheetExtension(widget, parent); return 0; }
Ou vous pouvez utiliser une fabrique existante, en étendant la fonction QExtensionFactory::createExtension() pour que la fabrique puisse également créer une extension de feuille de membre. Voici un exemple :
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(QDesignerMemberSheetExtension))) { return new MyMemberSheetExtension(widget, parent); } else { return 0; } }
Pour un exemple complet utilisant une classe d'extension, voir l'exemple d'extension de menu de tâches. L'exemple montre comment créer un plugin de widget personnalisé pour Qt 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 constexpr noexcept] QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
Détruit l'extension de la feuille de membre.
[pure virtual] int QDesignerMemberSheetExtension::count() const
Renvoie le nombre de fonctions membres de l'extension.
[pure virtual] QString QDesignerMemberSheetExtension::declaredInClass(int index) const
Renvoie le nom de la classe dans laquelle est déclarée la fonction membre avec l'adresse index.
Voir aussi indexOf().
[pure virtual] int QDesignerMemberSheetExtension::indexOf(const QString &name) const
Renvoie l'index de la fonction membre spécifiée par l'adresse name.
Voir aussi memberName().
[pure virtual] bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
Retourne vrai si la fonction membre avec la valeur index est héritée de QWidget, sinon faux.
Voir aussi indexOf().
[pure virtual] bool QDesignerMemberSheetExtension::isSignal(int index) const
Retourne true si la fonction membre avec le index donné est un signal, sinon false.
Voir aussi indexOf().
[pure virtual] bool QDesignerMemberSheetExtension::isSlot(int index) const
Retourne true si la fonction membre avec le index donné est un slot, sinon false.
Voir aussi indexOf().
[pure virtual] bool QDesignerMemberSheetExtension::isVisible(int index) const
Retourne true si la fonction membre avec le index donné est visible dans l'éditeur de signaux et de slots de Qt Widgets Designer, sinon false.
Voir aussi indexOf() et setVisible().
[pure virtual] QString QDesignerMemberSheetExtension::memberGroup(int index) const
Renvoie le nom du groupe de membres spécifié pour la fonction avec l'adresse index.
Voir aussi indexOf() et setMemberGroup().
[pure virtual] QString QDesignerMemberSheetExtension::memberName(int index) const
Renvoie le nom de la fonction membre avec l'adresse index.
Voir aussi indexOf().
[pure virtual] QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
Renvoie les noms des paramètres de la fonction membre avec l'adresse index, sous la forme d'une liste QByteArray.
Voir aussi indexOf() et parameterTypes().
[pure virtual] QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
Renvoie les types de paramètres de la fonction membre avec l'adresse index, sous la forme d'une liste QByteArray.
Voir aussi indexOf() et parameterNames().
[pure virtual] void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
Définit le groupe membre de la fonction membre avec la valeur index, à group.
Voir aussi indexOf() et memberGroup().
[pure virtual] void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
Si visible est vrai, la fonction membre portant le numéro index est visible dans le mode d'édition des signaux et des emplacements de Qt Widgets Designer; dans le cas contraire, la fonction membre est cachée.
Voir aussi indexOf() et isVisible().
[pure virtual] QString QDesignerMemberSheetExtension::signature(int index) const
Renvoie la signature de la fonction membre avec l'adresse index.
Voir aussi indexOf().
© 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.