QDesignerCustomWidgetCollectionInterface Class Reference

[ QtDesigner module]

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

Inherited by QPyDesignerCustomWidgetCollectionPlugin .

方法


详细描述

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

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>
 #include <QtCore/qplugin.h>
 class MyCustomWidgets: public QObject, public QDesignerCustomWidgetCollectionInterface
 {
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)
 public:
     MyCustomWidgets(QObject *parent = 0);
     virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const;
 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;
 }
 Q_EXPORT_PLUGIN2(customwidgetsplugin, MyCustomWidgets)
			

Note that instead of exporting each custom widget plugin using the Q_EXPORT_PLUGIN2 () macro, you export the entire collection. The Q_EXPORT_PLUGIN2 () 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.


方法文档编制

QDesignerCustomWidgetCollectionInterface.__init__ ( self )

QDesignerCustomWidgetCollectionInterface.__init__ ( self , QDesignerCustomWidgetCollectionInterface )

list-of-QDesignerCustomWidgetInterface QDesignerCustomWidgetCollectionInterface.customWidgets ( self )

This method is abstract and should be reimplemented in any sub-class.

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