Класс QDesignerCustomWidgetCollectionInterface
Класс QDesignerCustomWidgetCollectionInterface позволяет включить несколько пользовательских виджетов в одну библиотеку. Подробнее...
| Заголовок: | #include <QDesignerCustomWidgetCollectionInterface> |
| qmake: | QT += designer |
Открытые функции
| virtual | ~QDesignerCustomWidgetCollectionInterface() |
| virtual QList<QDesignerCustomWidgetInterface *> | customWidgets() const = 0 |
Подробное описание
Класс QDesignerCustomWidgetCollectionInterface позволяет включить несколько пользовательских виджетов в одну библиотеку.
При реализации плагина пользовательского виджета, его необходимо создать как отдельную библиотеку. Если вы хотите включить несколько плагинов пользовательских виджетов в одну библиотеку, необходимо дополнительно унаследовать класс QDesignerCustomWidgetCollectionInterface.
QDesignerCustomWidgetCollectionInterface содержит одну функцию, возвращающую список объектов QDesignerCustomWidgetInterface коллекции. Например, если у вас есть несколько пользовательских виджетов CustomWidgetOne, CustomWidgetTwo и CustomWidgetThree, определение класса может выглядеть следующим образом:
#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_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface")
Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)
public:
MyCustomWidgets(QObject *parent = 0);
QList<QDesignerCustomWidgetInterface*> customWidgets() const Q_DECL_OVERRIDE;
private:
QList<QDesignerCustomWidgetInterface*> widgets;
}; В конструкторе класса вы добавляете интерфейсы к вашим пользовательским виджетам в список, который вы возвращаете в функции 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_PLUGIN_METADATA(), вы экспортируете всю коллекцию. Макрос Q_PLUGIN_METADATA() гарантирует, что Qt Designer может получить доступ к пользовательским виджетам и создать их. Без этого макроса, Qt Designer не сможет их использовать.
См. также QDesignerCustomWidgetInterface и Создание пользовательских виджетов для Qt Designer.
Документация функций-членов
[virtual] QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface()
Уничтожает интерфейс коллекции пользовательских виджетов.
[pure virtual] QList<QDesignerCustomWidgetInterface *> QDesignerCustomWidgetCollectionInterface::customWidgets() const
Возвращает список интерфейсов пользовательских виджетов коллекции.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qdesignercustomwidgetcollectioninterface.html