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.