The QDesignerCustomWidgetCollectionInterface class allows you to include several custom widgets in one single library. 更多...
头: | #include <QDesignerCustomWidgetCollectionInterface> |
CMake: |
find_package(Qt6 COMPONENTS Designer REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
virtual | ~QDesignerCustomWidgetCollectionInterface () |
virtual QList<QDesignerCustomWidgetInterface *> | customWidgets () const = 0 |
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<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 () 函数:
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.
另请参阅 QDesignerCustomWidgetInterface and 创建自定义 Widget 为 Qt Designer .
[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.