Spec-Zone.ru › Qt 5.12

Класс QExtensionFactory

Класс QExtensionFactory позволяет создать фабрику, способную создавать экземпляры пользовательских расширений в Qt Designer. Подробнее...

Заголовок: #include <QExtensionFactory>
qmake: QT += designer
Наследует: QObject и QAbstractExtensionFactory
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые функции

QExtensionFactory(QExtensionManager *parent = Q_NULLPTR)
QExtensionManager * extensionManager() const

Переопределённые открытые функции

virtual QObject * extension(QObject *object, const QString &iid) const override
  • 31 открытая функция унаследована от QObject
  • 1 открытая функция унаследована от QAbstractExtensionFactory

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов унаследовано от QObject

Защищённые функции

virtual QObject * createExtension(QObject *object, const QString &iid, QObject *parent) const
  • 9 защищённых функций унаследовано от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 2 сигнала унаследованы от QObject

Подробное описание

Класс QExtensionFactory позволяет создать фабрику, способную создавать экземпляры пользовательских расширений в Qt Designer.

В Qt Designer расширения создаются только при необходимости. По этой причине при реализации пользовательского расширения необходимо также создать QExtensionFactory, то есть класс, способный создавать экземпляр вашего расширения, и зарегистрировать его с помощью менеджера расширений Qt Designer.

Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer. Когда требуется расширение, менеджер расширений Qt Designer перебирает все зарегистрированные фабрики, вызывая QExtensionFactory::createExtension() для каждой из них, пока не найдёт первую фабрику, способную создать требуемое расширение для выбранного объекта. Эта фабрика затем создаст экземпляр расширения.

В Qt Designer доступны четыре типа расширений: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension и QDesignerTaskMenuExtension. Поведение Qt Designer одинаково, независимо от того, связано ли запрашиваемое расширение с контейнером с несколькими страницами, вкладкой членов, вкладкой свойств или меню задач.

Вы можете либо создать новый QExtensionFactory и переопределить функцию QExtensionFactory::createExtension(). Например:

        QObject *ANewExtensionFactory::createExtension(QObject *object,
                const QString &iid, QObject *parent) const
        {
            if (iid != Q_TYPEID(QDesignerContainerExtension))
                return 0;

            if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
                   (object))
                return new MyContainerExtension(widget, parent);

            return 0;
        }

Или вы можете использовать существующую фабрику, расширив функцию QExtensionFactory::createExtension(), чтобы сделать её способной создавать и ваше расширение. Например:

        QObject *AGeneralExtensionFactory::createExtension(QObject *object,
                const QString &iid, QObject *parent) const
        {
            MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object);

            if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) {
                return new MyTaskMenuExtension(widget, parent);

            } else if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) {
                return new MyContainerExtension(widget, parent);

            } else {
                return 0;
            }
        }

Для примера использования класса QExtensionFactory см. Пример расширения меню задач. В примере показано, как создать плагин пользовательского виджета для Qt Designer и как использовать класс QDesignerTaskMenuExtension для добавления пользовательских элементов в меню задач Qt Designer.

См. также QExtensionManager и QAbstractExtensionFactory.

Документация по функциям членов

QExtensionFactory::QExtensionFactory(QExtensionManager *parent = Q_NULLPTR)

Конструирует фабрику расширений с заданным parent.

[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const

Создаёт расширение, заданное iid, для данного object. Объект расширения создаётся как дочерний элемент указанного parent.

См. также extension().

[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const

Переопределено из QAbstractExtensionFactory::extension().

Возвращает расширение, заданное iid, для данного object.

См. также createExtension().

QExtensionManager *QExtensionFactory::extensionManager() const

Возвращает менеджер расширений для фабрики расширений.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qextensionfactory.html

Spec-Zone.ru

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