Sur cette page

QDesignerCustomWidgetInterface Class

La classe `QDesignerCustomWidgetInterface` permet à l'Qt Widgets Designer d'accéder à des widgets personnalisés et de les créer. En savoir plus...

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

Fonctions publiques

virtual ~QDesignerCustomWidgetInterface()
virtual QString codeTemplate() const
virtual QWidget *createWidget(QWidget *parent) = 0
virtual QString domXml() const
virtual QString group() const = 0
virtual QIcon icon() const = 0
virtual QString includeFile() const = 0
virtual void initialize(QDesignerFormEditorInterface *formEditor)
virtual bool isContainer() const = 0
virtual bool isInitialized() const
virtual QString name() const = 0
virtual QString toolTip() const = 0
virtual QString whatsThis() const = 0

Macros

Description détaillée

QDesignerCustomWidgetInterface fournit une interface à un widget personnalisé. La classe contient un ensemble de fonctions qui doivent être redéfinies dans les sous-classes pour renvoyer des informations de base sur le widget, telles que le nom de sa classe et le nom de son fichier d'en-tête. D'autres fonctions doivent être implémentées pour initialiser le plugin lors de son chargement et pour créer des instances du widget personnalisé destinées à être utilisées par le Designer d'Qt Widgets.

Lors de l’implémentation d’un widget personnalisé, vous devez créer une sous-classe de QDesignerCustomWidgetInterface afin de rendre votre widget accessible à l’ Qt Widgets Designer. Par exemple, voici la déclaration du plugin utilisé dans l’exemple « Custom Widget Plugin », qui permet d’utiliser un widget personnalisé représentant une horloge analogique dans l’ Qt Widgets Designer :

class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    explicit AnalogClockPlugin(QObject *parent = nullptr);

    bool isContainer() const override;
    bool isInitialized() const override;
    QIcon icon() const override;
    QString domXml() const override;
    QString group() const override;
    QString includeFile() const override;
    QString name() const override;
    QString toolTip() const override;
    QString whatsThis() const override;
    QWidget *createWidget(QWidget *parent) override;
    void initialize(QDesignerFormEditorInterface *core) override;

private:
    bool initialized = false;
};

Notez que la seule partie de la définition de classe spécifique à ce widget personnalisé particulier est le nom de la classe. De plus, 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()`. Cela permet à Qt Widgets Designer d’utiliser la fonction ` qobject_cast()` pour rechercher les interfaces prises en charge en utilisant uniquement un pointeur ` QObject `.

Qt Widgets Une fois qu’ initialize Designer a chargé un plugin de widget personnalisé, il appelle la fonction () de l’interface pour lui permettre de configurer toutes les ressources dont il pourrait avoir besoin. Cette fonction est appelée avec un paramètre QDesignerFormEditorInterface qui fournit au plugin un accès à l’ensemble de l’API d’ Qt Widgets Designer.

Qt Widgets Designer crée des instances du widget personnalisé en appelant la fonction createWidget() du plug-in avec un widget parent approprié. Les plug-ins doivent créer et renvoyer une instance d’un widget personnalisé avec le widget parent spécifié.

Exportation de votre plugin de widget personnalisé vers Qt Widgets Designer à l’aide de la macro Q_PLUGIN_METADATA(). Par exemple, si une bibliothèque nommée libcustomwidgetplugin.so (sous Unix) ou libcustomwidget.dll (sous Windows) contient une classe de widget nommée MyCustomWidget, nous pouvons l’exporter en ajoutant la ligne suivante au fichier contenant l’en-tête du plugin :

Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")

Cette macro garantit que le concepteur d’ Qt Widgets s peut accéder au widget personnalisé et le créer. Sans cette macro, le concepteur d’ Qt Widgets s ne peut en aucun cas l’utiliser.

Lors de l’implémentation d’un plugin de widget personnalisé, vous le compilez sous la forme d’une bibliothèque distincte. Si vous souhaitez inclure plusieurs plugins de widgets personnalisés dans la même bibliothèque, vous devez en outre créer une sous-classe de ` QDesignerCustomWidgetCollectionInterface`.

Avertissement : si votre plugin de widget personnalisé contient des propriétés de type ` QVariant `, sachez que seules les ` types ` suivantes sont prises en charge :

  • QVariant::ByteArray
  • QVariant::Bool
  • QVariant::Color
  • QVariant::Cursor
  • QVariant::Date
  • QVariant::DateTime
  • QVariant::Double
  • QVariant::Int
  • QVariant::Point
  • QVariant::Rect
  • QVariant::Size
  • QVariant::SizePolicy
  • QVariant::String
  • QVariant::Time
  • QVariant::UInt

Pour un exemple complet utilisant la classe QDesignerCustomWidgetInterface, consultez l'exemple de widget personnalisé. Cet exemple montre comment créer un plugin de widget personnalisé pour le Designer d'Qt Widgets.

Voir également « QDesignerCustomWidgetCollectionInterface » et « Création de widgets personnalisés pour le Designer d’ Qt Widgets ».

Documentation sur les fonctions membres

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

Supprime l'interface du widget personnalisé.

[virtual] QString QDesignerCustomWidgetInterface::codeTemplate() const

Cette fonction est réservée à une utilisation future par Qt Widgets Designer.

[pure virtual] QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)

Renvoie une nouvelle instance du widget personnalisé, avec l'parent on fournie.

[virtual] QString QDesignerCustomWidgetInterface::domXml() const

Renvoie le code XML utilisé pour décrire les propriétés du widget personnalisé à l'outil de conception d'Qt Widgets.

[pure virtual] QString QDesignerCustomWidgetInterface::group() const

Renvoie le nom du groupe auquel appartient le widget personnalisé.

[pure virtual] QIcon QDesignerCustomWidgetInterface::icon() const

Renvoie l'icône utilisée pour représenter le widget personnalisé dans la boîte de widgets d'Qt Widgets Designer.

[pure virtual] QString QDesignerCustomWidgetInterface::includeFile() const

Renvoie le chemin d'accès au fichier d'inclusion utilisé par uic lors de la génération du code du widget personnalisé.

Pour les widgets personnalisés utilisés en C++ et Qt for Python, utilisez des préfixes pour spécifier des informations propres au langage dans la chaîne renvoyée, comme indiqué ci-dessous :

"C++:myheader.h,Python:MyModule"

[virtual] void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)

Initialise le widget pour qu'il puisse être utilisé avec l'interface formEditor spécifiée.

Voir également isInitialized().

[pure virtual] bool QDesignerCustomWidgetInterface::isContainer() const

Renvoie « true » si le widget personnalisé est destiné à être utilisé comme conteneur ; sinon, renvoie « false ».

La plupart des widgets personnalisés ne sont pas destinés à contenir d'autres widgets ; leurs implémentations de cette fonction renverront donc « false », mais les conteneurs personnalisés renverront « true » afin de garantir leur bon fonctionnement dans le Concepteur d Qt Widgets.

[virtual] bool QDesignerCustomWidgetInterface::isInitialized() const

Renvoie « true » si le widget a été initialisé ; sinon, renvoie « false ».

Voir également initialize().

[pure virtual] QString QDesignerCustomWidgetInterface::name() const

Renvoie le nom de la classe du widget personnalisé fourni par l'interface.

Le nom renvoyé doit être identique au nom de classe utilisé pour le widget personnalisé.

[pure virtual] QString QDesignerCustomWidgetInterface::toolTip() const

Renvoie une brève description du widget pouvant être utilisée par Qt Widgets Designer dans une info-bulle.

[pure virtual] QString QDesignerCustomWidgetInterface::whatsThis() const

Renvoie une description du widget pouvant être utilisée par Qt Widgets Designer dans la rubrique « Qu'est-ce que c'est ? » de l'aide relative à ce widget.

Documentation sur les macros

QDESIGNER_WIDGET_EXPORT

Cette macro est utilisée lors de la définition de widgets personnalisés afin de garantir qu'ils soient correctement exportés depuis les plugins pour être utilisés avec Qt Widgets Designer.

Sur certaines plateformes, les symboles requis par Qt Widgets Designer pour créer de nouveaux widgets sont supprimés des plugins par le système de compilation, ce qui les rend inutilisables. L'utilisation de cette macro garantit que les symboles sont conservés sur ces plateformes, sans effet secondaire sur les autres plateformes.

Par exemple, l’exemple de plugin de widget personnalisé exporte une classe de widget personnalisée avec la déclaration suivante :

class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget
{
    Q_OBJECT
    ...
};

Voir également Création de widgets personnalisés pour Qt Widgets Designer.

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