Sur cette page

QDesignerPropertySheetExtension Class

La classe `QDesignerPropertySheetExtension` vous permet de modifier les propriétés d'un widget affiché dans l'éditeur de propriétés de ` Qt Designer`. En savoir plus...

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

Fonctions publiques

QDesignerPropertySheetExtension()
QDesignerPropertySheetExtension(const QDesignerPropertySheetExtension &)
QDesignerPropertySheetExtension(QDesignerPropertySheetExtension &&)
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
QDesignerPropertySheetExtension &operator=(QDesignerPropertySheetExtension &&)
QDesignerPropertySheetExtension &operator=(const QDesignerPropertySheetExtension &)

Description détaillée

QDesignerPropertySheetExtension fournit un ensemble de fonctions généralement utilisées pour interroger les propriétés d’un widget et pour manipuler l’apparence de ces propriétés dans l’éditeur de propriétés. Par 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é puisse être restaurée à l’aide de la pile d’annulation, vous devez utiliser la fonction ` QDesignerFormWindowCursorInterface::setProperty()`, ou sa fonction associée ` setWidgetProperty()`, à la place.

Lors de l’implémentation d’un plugin de widget personnalisé, un pointeur vers 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 d’ 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 disposent d’une feuille de propriétés par défaut qui renseigne l’éditeur de propriétés d’ Qt Widgets Designer avec les propriétés du widget (c’est-à-dire celles définies à l’aide de la macro Q_PROPERTY()). Mais QDesignerPropertySheetExtension fournit également une interface permettant de créer des extensions de feuille de propriétés personnalisées.

Gardez à l’esprit les restrictions suivantes :

  • Qt Widgets Designer 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 recherche l’extension de feuille de propriétés du widget. Si le widget sélectionné dispose d’une extension de feuille de propriétés implémentée, celle-ci 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 QVariant personnalisés opaques contenant des informations supplémentaires, au lieu de simples types de données Qt. C’est par exemple le cas pour les énumérations, les indicateurs, les icônes, les images bitmap et les chaînes de caractères.
  • Qt Widgets L'éditeur de propriétés de Designer ne dispose d'aucune implémentation permettant de gérer les types ` Q_PROPERTY ` pour les types personnalisés déclarés à l'aide de ` 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 signalée au système de méta-objets à 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 à l’aide d’un simple pointeur QObject.

Dans Qt Widgets Designer, les extensions ne sont créées qu’au moment où elles sont requises. C’est pourquoi, lors de l’implémentation d’une extension de feuille de propriétés, vous devez également créer un ` QExtensionFactory`, c’est-à-dire une classe capable de créer une instance de votre extension, et l’enregistrer à l’aide de la méthode ` extension manager` de Qt Widgets Designer.

Lorsqu’une extension de feuille de propriétés est requise, la méthode ` extension manager ` d’ Qt Widgets Designer parcourt toutes les fabriques enregistrées en appelant ` QExtensionFactory::createExtension()` pour chacune d’entre elles, jusqu’à ce qu’elle trouve la première capable de créer une extension de feuille de propriétés pour le widget sélectionné. Cette fabrique crée alors une instance de l’extension. Si aucune fabrique de ce type n’est trouvée, Qt Widgets Designer utilise la feuille de propriétés par défaut.

Il existe quatre types d’extensions 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 multipages, à 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(QDesignerPropertySheetExtension))
        return 0;

    if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
           (object))
        return new MyPropertySheetExtension(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 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, consultez l’exemple « Extension du menu des tâches ». Cet 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ées.

Documentation sur les fonctions membres

[constexpr noexcept default] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension()

Construit par défaut une instance de ` QDesignerPropertySheetExtension`.

[delete] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension(const QDesignerPropertySheetExtension &)

Copie et construit une instance de ` QDesignerPropertySheetExtension`. Cette fonction a été supprimée.

[delete] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension(QDesignerPropertySheetExtension &&)

Crée par « move » une instance de ` QDesignerPropertySheetExtension`. Cette fonction est supprimée.

[virtual constexpr noexcept default] QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()

Supprime l'extension de la feuille de propriétés.

[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

Renvoie « true » si la propriété située à l'index indiquée dispose d'un bouton de réinitialisation dans l'éditeur de propriétés de Qt Widgets Designer ; sinon, renvoie « false ».

Voir également 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

Renvoie « true » si la propriété située à l'index indiquée est un attribut, qui sera exclu du fichier UI ; sinon, renvoie « false ».

Voir également indexOf() et setAttribute().

[pure virtual] bool QDesignerPropertySheetExtension::isChanged(int index) const

Renvoie « true » si la valeur de la propriété à l'index indiquée diffère de la valeur par défaut de la propriété, sinon « false ».

Voir également indexOf(), setChanged() et reset().

[pure virtual] bool QDesignerPropertySheetExtension::isEnabled(int index) const

Renvoie « true » si la propriété située à l'index indiquée est activée dans l'éditeur de propriétés de Qt Widgets Designer ; sinon, renvoie « false ».

Voir aussi indexOf().

[pure virtual] bool QDesignerPropertySheetExtension::isVisible(int index) const

Renvoie « true » si la propriété située à l'index indiquée est visible dans l'éditeur de propriétés d'Qt Widgets Designer, sinon « false ».

Voir également indexOf() et setVisible().

[pure virtual] QVariant QDesignerPropertySheetExtension::property(int index) const

Renvoie la valeur de la propriété à l'adresse index.

Voir également indexOf(), setProperty() et propertyGroup().

[pure virtual] QString QDesignerPropertySheetExtension::propertyGroup(int index) const

Renvoie le groupe de propriétés associé à la propriété située à l'adresse index.

Qt Widgets L'éditeur de propriétés de Designer prend en charge les groupes de propriétés, c'est-à-dire des sections de propriétés associées. 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 indiquée index à sa valeur par défaut. Renvoie « true » si une valeur par défaut a pu être trouvée, sinon « false ».

Voir également indexOf(), hasReset() et isChanged().

[pure virtual] void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)

Si attribute est défini sur « true », la propriété située à l'index indiquée devient un attribut qui sera exclu du fichier UI ; dans le cas contraire, elle y sera incluse.

Voir également indexOf() et isAttribute().

[pure virtual] void QDesignerPropertySheetExtension::setChanged(int index, bool changed)

Détermine si la propriété située à l'index indiquée est différente de sa valeur par défaut ou non, en fonction du paramètre changed.

Voir également indexOf() et isChanged().

[pure virtual] void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)

Définit l'value e de la propriété à la valeur indiquée index.

Avertissement : 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é puisse être annulée à l’aide de la pile d’annulation, vous devez utiliser la fonction ` QDesignerFormWindowCursorInterface::setProperty()` ou sa fonction associée ` setWidgetProperty()`.

Voir également indexOf(), property() et propertyGroup().

[pure virtual] void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)

Définit le groupe de propriétés de la propriété située à l'index indiquée sur « group ».

L'association d'une propriété à un groupe permet de l'afficher dans la section de ce groupe au sein de 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 défini sur « true », la propriété située à l'adresse index est visible dans l'éditeur de propriétés de Qt Widgets Designer ; dans le cas contraire, la propriété est masquée.

Voir également indexOf() et isVisible().

[delete] QDesignerPropertySheetExtension &QDesignerPropertySheetExtension::operator=(QDesignerPropertySheetExtension &&)

La commande « Move » attribue « other » à cette instance « QDesignerPropertySheetExtension ». Cette fonction est supprimée.

[delete] QDesignerPropertySheetExtension &QDesignerPropertySheetExtension::operator=(const QDesignerPropertySheetExtension &)

Copie et attribue « other » à cette instance « QDesignerPropertySheetExtension ». 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.