Spec-Zone.ru › Qt 5.6

Класс QExtensionManager

Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer. Подробнее...

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

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

QExtensionManager(QObject *parent = Q_NULLPTR)
~QExtensionManager()

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

virtual QObject * extension(QObject *object, const QString &iid) const
virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())
virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())
  • 31 открытых функций, унаследованных от QObject
  • 3 открытых функции, унаследованных от QAbstractExtensionManager

Связанные нечлены

T qt_extension(QAbstractExtensionManager *manager, QObject *object)

Макросы

Q_DECLARE_EXTENSION_INTERFACE(ExtensionName, Identifier)

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

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 2 сигнала, унаследованные от QObject
  • 11 статических открытых членов, унаследованных от QObject
  • 9 защищенных функций, унаследованных от QObject

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

Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer.

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

Регистрация фабрики расширения обычно выполняется в функции QDesignerCustomWidgetInterface::initialize():

        void MyPlugin::initialize(QDesignerFormEditorInterface *formEditor)
        {
            if (initialized)
                return;

            QExtensionManager *manager = formEditor->extensionManager();
            Q_ASSERT(manager != 0);

            manager->registerExtensions(new MyExtensionFactory(manager),
                                        Q_TYPEID(QDesignerTaskMenuExtension));

            initialized = true;
        }

Класс QExtensionManager не предназначен для прямого создания экземпляров. Вы можете получить интерфейс к менеджеру расширений Qt Designer, используя функцию QDesignerFormEditorInterface::extensionManager(). Указатель на текущий объект QDesignerFormEditorInterface Qt Designer (formEditor в примере выше) предоставляется в качестве параметра функции QDesignerCustomWidgetInterface::initialize(). При реализации плагина пользовательского виджета необходимо унаследовать класс QDesignerCustomWidgetInterface, чтобы предоставить ваш плагин для Qt Designer.

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

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

Полный пример использования класса QExtensionManager см. в примере расширения меню задач. Пример показывает, как создать плагин пользовательского виджета для Qt Designer и как использовать класс QDesignerTaskMenuExtension, чтобы добавить пользовательские пункты в меню задач Qt Designer.

См. также QExtensionFactory и QAbstractExtensionManager.

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

QExtensionManager::QExtensionManager(QObject *parent = Q_NULLPTR)

Создаёт менеджер расширений с указанным parent.

QExtensionManager::~QExtensionManager()

Уничтожает менеджер расширений

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

Переопределяет QAbstractExtensionManager::extension().

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

[virtual] void QExtensionManager::registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())

Переопределяет QAbstractExtensionManager::registerExtensions().

Регистрирует расширение, заданное данным factory и идентификатором расширения iid.

[virtual] void QExtensionManager::unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())

Переопределяет QAbstractExtensionManager::unregisterExtensions().

Дезактивирует расширение, заданное данным factory и идентификатором расширения iid.

Связанные нечлены

T qt_extension(QAbstractExtensionManager *manager, QObject *object)

Возвращает расширение данного object, преобразованное к типу T, если объект имеет тип T (или подтип); иначе возвращает 0. Расширение извлекается с помощью заданного менеджера manager.

       QDesignerPropertySheetExtension *propertySheet;
       QExtensionManager manager = formEditor->extensionManager();

       propertySheet = qt_extension<QDesignerPropertySheetExtension*>(manager, widget);

       if(propertySheet) {...}

При реализации плагина пользовательского виджета указатель на текущий объект QDesignerFormEditorInterface Qt Designer (formEditor) предоставляется в качестве параметра функции QDesignerCustomWidgetInterface::initialize().

Если у виджета в примере выше не определено QDesignerPropertySheetExtension, propertySheet будет нулевым указателем.

Документация по макросам

Q_DECLARE_EXTENSION_INTERFACE(ExtensionName, Identifier)

Связывает заданный Identifier (строковый литерал) с классом расширения ExtensionName. Identifier должен быть уникальным. Например:

   Q_DECLARE_EXTENSION_INTERFACE(MyExtension, "com.mycompany.myproduct.myextension")

Использование названий компании и продукта является хорошим способом обеспечения уникальности идентификатора.

При реализации пользовательского класса расширения необходимо использовать Q_DECLARE_EXTENSION_INTERFACE(), чтобы включить использование функции qt_extension(). Макрос обычно располагается сразу после определения класса ExtensionName в соответствующем файле заголовка.

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

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

Spec-Zone.ru

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