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:
#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&
lt;QDesignerCustomWidgetInterface*&
gt; customWidgets() const
override
;
private
:
QList&
lt;QDesignerCustomWidgetInterface*&
gt; widgets;
}
;
In the class constructor you add the interfaces to your custom widgets to the list which you return in the customWidgets() function:
MyCustomWidgets::
MyCustomWidgets(QObject *
parent)
:
QObject(parent)
{
widgets.append(new
CustomWidgetOneInterface(this
));
widgets.append(new
CustomWidgetTwoInterface(this
));
widgets.append(new
CustomWidgetThreeInterface(this
));
}
QList&
lt;QDesignerCustomWidgetInterface*&
gt; 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.