IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

QDesignerCustomWidgetCollectionInterface Class

The QDesignerCustomWidgetCollectionInterface class allows you to include several custom widgets in one single library.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

QDesignerCustomWidgetCollectionInterface Class

  • Header: QDesignerCustomWidgetCollectionInterface

  • CMake:

    find_package(Qt6 REQUIRED COMPONENTS Designer)

    target_link_libraries(mytarget PRIVATE Qt6::Designer)

  • qmake: QT += designer

Detailed Description

When implementing a custom widget plugin, you build it as a separate library. If you want to include several custom widget plugins in the same library, you must in addition subclass QDesignerCustomWidgetCollectionInterface.

QDesignerCustomWidgetCollectionInterface contains one single function returning a list of the collection's QDesignerCustomWidgetInterface objects. For example, if you have several custom widgets CustomWidgetOne, CustomWidgetTwo and CustomWidgetThree, the class definition may look like this:

 
Sélectionnez
#include customwidgetoneinterface.h
#include customwidgettwointerface.h
#include customwidgetthreeinterface.h

#include <QtDesigner/qtdesigner.h>
#include <QtCore/qplugin.h>

class MyCustomWidgets: public QObject, public QDesignerCustomWidgetCollectionInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface")
    Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)

public:
    MyCustomWidgets(QObject *parent = 0);

    QList<QDesignerCustomWidgetInterface*> customWidgets() const override;

private:
    QList<QDesignerCustomWidgetInterface*> widgets;
};

In the class constructor you add the interfaces to your custom widgets to the list which you return in the customWidgets() function:

 
Sélectionnez
MyCustomWidgets::MyCustomWidgets(QObject *parent)
        : QObject(parent)
{
    widgets.append(new CustomWidgetOneInterface(this));
    widgets.append(new CustomWidgetTwoInterface(this));
    widgets.append(new CustomWidgetThreeInterface(this));
}

QList<QDesignerCustomWidgetInterface*> MyCustomWidgets::customWidgets() const
{
    return widgets;
}

Note that instead of exporting each custom widget plugin using the Q_PLUGIN_METADATA() macro, you export the entire collection. The Q_PLUGIN_METADATA() macro ensures that Qt Designer can access and construct the custom widgets. Without this macro, there is no way for Qt Designer to use them.

See Also

Member Function Documentation

 

[virtual] QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface()

Destroys the custom widget collection interface.

[pure virtual] QList<QDesignerCustomWidgetInterface *> QDesignerCustomWidgetCollectionInterface::customWidgets() const

Returns a list of interfaces to the collection's custom widgets.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+