Класс QDesignerCustomWidgetCollectionInterface
Класс QDesignerCustomWidgetCollectionInterface позволяет включать несколько пользовательских виджетов в одну библиотеку. Подробнее...
| Заголовок: | #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 |
Подробное описание
При реализации плагина пользовательского виджета, он создается как отдельная библиотека. Если вы хотите включить несколько плагинов пользовательских виджетов в одну библиотеку, вам необходимо дополнительно унаследовать от класса QDesignerCustomWidgetCollectionInterface.
QDesignerCustomWidgetCollectionInterface содержит единственную функцию, возвращающую список объектов QDesignerCustomWidgetInterface коллекции. Например, если у вас есть несколько пользовательских виджетов CustomWidgetOne, CustomWidgetTwo и CustomWidgetThree, определение класса может выглядеть так:
#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;
}; В конструкторе класса вы добавляете интерфейсы к вашим пользовательским виджетам в список, который вы возвращаете в функции 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-6.1/qdesignercustomwidgetcollectioninterface.html