Spec-Zone.ru › Qt 5.9

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API