QDesignerPropertySheetExtension Class
La classe QDesignerPropertySheetExtension vous permet de manipuler les propriétés d'un widget qui sont affichées dans l'éditeur de propriétés de Qt Designer. Plus d'informations...
| En-tête : | #include <QDesignerPropertySheetExtension> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Designer)target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake : | QT += designer |
Fonctions publiques
| 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 |
Description détaillée
QDesignerPropertySheetExtension fournit une collection de fonctions qui sont généralement utilisées pour interroger les propriétés d'un widget et pour manipuler l'apparence des propriétés dans l'éditeur de propriétés. A titre d'exemple :
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;
Notez que si vous modifiez la valeur d'une propriété à l'aide de la fonction QDesignerPropertySheetExtension::setProperty(), la pile d'annulation n'est pas mise à jour. Pour vous assurer que la valeur d'une propriété peut être annulée à l'aide de la pile d'annulation, vous devez utiliser la fonction QDesignerFormWindowCursorInterface::setProperty(), ou son copain setWidgetProperty(), à la place.
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 propriétés, ou 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 propriétés par défaut qui remplit l'éditeur de propriétés de Qt Widgets Designer avec les propriétés du widget (c'est-à-dire celles définies avec la macro Q_PROPERTY()). Mais QDesignerPropertySheetExtension fournit également une interface pour créer des extensions de feuilles de propriétés personnalisées.
Gardez à l'esprit les limitations suivantes :
- Qt Widgets Designer QDesignerPropertySheetExtension utilise QDesignerPropertySheetExtension pour alimenter son éditeur de propriétés. Chaque fois qu'un widget est sélectionné dans son espace de travail, Qt Widgets Designer demande l'extension de la feuille de propriétés du widget. Si le widget sélectionné possède une extension de feuille de propriétés implémentée, cette extension remplacera la feuille de propriétés par défaut.
- Les types de données utilisés par la feuille de propriétés pour certaines propriétés sont des types personnalisés opaques QVariant contenant des informations supplémentaires au lieu de types de données Qt ordinaires. C'est le cas, par exemple, des énumérations, des drapeaux, des icônes, des pixmaps et des chaînes de caractères.
- Qt Widgets DesignerL'éditeur de propriétés de Qt n'a pas d'implémentation pour gérer les types Q_PROPERTY pour les types personnalisés qui ont été déclarés avec Q_DECLARE_METATYPE().
Pour créer une extension de feuille de propriétés, votre classe d'extension doit hériter à la fois de QObject et de QDesignerPropertySheetExtension. Ensuite, puisque 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 MyPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) 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 mettez en œuvre une extension de feuille de propriétés, 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.
Lorsqu'une extension de feuille de propriétés est requise, Qt Widgets Designer's extension manager passe en revue toutes les 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 feuille de propriétés pour le widget sélectionné soit trouvée. Cette usine 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 propriétés par défaut.
Quatre types d'extensions sont disponibles dans Qt Widgets Designer: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension et QDesignerTaskMenuExtension. Le comportement de Qt 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(QDesignerPropertySheetExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyPropertySheetExtension(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 propriétés. Par 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(QDesignerPropertySheetExtension))) { return new MyPropertySheetExtension(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 QDesignerDynamicPropertySheetExtension, QExtensionFactory, QExtensionManager, et Création d'extensions de widgets personnalisés.
Documentation des fonctions membres
[virtual constexpr noexcept] QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
Détruit l'extension de la feuille de propriété.
[pure virtual] int QDesignerPropertySheetExtension::count() const
Renvoie le nombre de propriétés du widget sélectionné.
[pure virtual] bool QDesignerPropertySheetExtension::hasReset(int index) const
Retourne vrai si la propriété à l'adresse index donnée a un bouton de réinitialisation dans l'éditeur de propriétés de Qt Widgets Designer, sinon faux.
Voir aussi indexOf() et reset().
[pure virtual] int QDesignerPropertySheetExtension::indexOf(const QString &name) const
Renvoie l'index d'une propriété donnée name.
Voir également propertyName().
[pure virtual] bool QDesignerPropertySheetExtension::isAttribute(int index) const
Retourne true si la propriété à l'adresse index est un attribut, qui sera exclu du fichier d'interface utilisateur, sinon false.
Voir aussi indexOf() et setAttribute().
[pure virtual] bool QDesignerPropertySheetExtension::isChanged(int index) const
Retourne true si la valeur de la propriété à l'adresse index donnée diffère de la valeur par défaut de la propriété, sinon false.
Voir aussi indexOf(), setChanged() et reset().
[pure virtual] bool QDesignerPropertySheetExtension::isEnabled(int index) const
Retourne vrai si la propriété à l'adresse index donnée est activée dans l'éditeur de propriétés de Qt Widgets Designer, sinon faux.
Voir aussi indexOf().
[pure virtual] bool QDesignerPropertySheetExtension::isVisible(int index) const
Retourne true si la propriété à l'adresse index donnée est visible dans l'éditeur de propriétés de Qt Widgets Designer, sinon false.
Voir aussi indexOf() et setVisible().
[pure virtual] QVariant QDesignerPropertySheetExtension::property(int index) const
Renvoie la valeur de la propriété à l'adresse index.
Voir aussi indexOf(), setProperty() et propertyGroup().
[pure virtual] QString QDesignerPropertySheetExtension::propertyGroup(int index) const
Renvoie le groupe de propriétés pour la propriété à l'adresse index.
Qt Widgets DesignerL'éditeur de propriétés d'EMCS prend en charge les groupes de propriétés, c'est-à-dire les sections de propriétés liées entre elles. Une propriété peut être associée à un groupe à l'aide de la fonction setPropertyGroup(). Le groupe par défaut de toute propriété est le nom de la classe qui la définit. Par exemple, la propriété QObject::objectName apparaît dans le groupe de propriétés QObject.
Voir également indexOf() et setPropertyGroup().
[pure virtual] QString QDesignerPropertySheetExtension::propertyName(int index) const
Renvoie le nom de la propriété à l'adresse index.
Voir aussi indexOf().
[pure virtual] bool QDesignerPropertySheetExtension::reset(int index)
Réinitialise la valeur de la propriété à l'adresse index, à la valeur par défaut. Retourne true si une valeur par défaut a pu être trouvée, sinon false.
Voir aussi indexOf(), hasReset() et isChanged().
[pure virtual] void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
Si attribute est vrai, la propriété située à l'adresse index devient un attribut qui sera exclu du fichier d'interface utilisateur ; dans le cas contraire, elle sera incluse.
Voir aussi indexOf() et isAttribute().
[pure virtual] void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
Définit si la propriété à l'adresse index donnée est différente de sa valeur par défaut ou non, en fonction du paramètre changed.
Voir aussi indexOf() et isChanged().
[pure virtual] void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
Définit l'adresse value de la propriété à l'adresse index.
Attention : Si vous modifiez la valeur d'une propriété à l'aide de cette fonction, la pile d'annulation n'est pas mise à jour. Pour vous assurer que la valeur d'une propriété peut être annulée à l'aide de la pile d'annulation, vous devez utiliser la fonction QDesignerFormWindowCursorInterface::setProperty(), ou son compagnon setWidgetProperty(), à la place.
Voir également indexOf(), property() et propertyGroup().
[pure virtual] void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
Définit le groupe de propriétés pour la propriété à l'adresse index donnée à group.
Le fait de relier une propriété à un groupe la fait apparaître dans la section de ce groupe dans l'éditeur de propriétés. Le groupe de propriétés par défaut de toute propriété est le nom de la classe qui la définit. Par exemple, la propriété QObject::objectName apparaît dans le groupe de propriétés QObject.
Voir également indexOf(), property() et propertyGroup().
[pure virtual] void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
Si visible est vrai, la propriété à l'adresse index est visible dans l'éditeur de propriétés de Qt Widgets Designer; sinon, la propriété est caché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.